ruby-on-rails – javascript函数无法在jquery-ajax中运行rails
我全局使用
Jquery UI Datepicker函数在所有页面中使用日历.
我创建了一个单独的javascript页面,如下所示: var showDatePickers = function() { $('[data-field-type="date"]').datepicker({ dateFormat: "yy-mm--dd",showOn: "both",buttonImageOnly: true,buttonImage: "/assets/blue-calendar-icon.png",buttonText: "Calendar" }); } $(showDatePickers); 我只是在我的视图中发布了我的datepicker字段, <div class="field"> <%= f.label :Renewal_Date %> <%= f.text_field :Renewal_Date,readonly: 'readonly',data: {field_type: date}} </div> 我将上述函数调用为单独的javascript文件. $(function() { if ($('html.asset_contracts').length == 1) { $(document.body).on('ajax:success','.new_asset_contract,.edit_asset_contract',showDatePickers); } }); 当页面加载,编辑和新操作时,它工作正常.但是当rails验证错误显示datepicker函数不起作用时.它显示空白text_field. 仅供参考:这是一个ajax页面,新的,创建,更新和编辑操作作为ajax页面工作.所以,我在我的表单中添加了remote:true,我有new.js,edit.js,create.js和update.js 这是我的控制器, def create @contract = Asset::Contract.new(params[:asset_contract]) respond_to do |format| if @contract.save format.html { redirect_to asset_contracts_path,notice: "Successfully Created" } format.js format.json { render json: @contract,status: :created,location: @contract } else format.html { render action: "new" } format.js format.json { render json: @contract.errors,status: :unprocessable_entity } end end end def update @contract = Asset::Contract.find(params[:id]) respond_to do |format| if @contract.update_attributes(params[:asset_contract]) format.html { redirect_to asset_contracts_path,notice: "Succesfully Updated" } format.js format.json { head :no_content } else format.html { render action: "edit" } format.js format.json { render json: @contract.errors,status: :unprocessable_entity } end end end 谢谢 解决方法
你正在创建像这样的日期选择器:
$(document.body).on('ajax:success',showDatePickers); 但是,这只会在AJAX调用成功时运行,因此您还需要一个错误处理程序. 看来你正在使用命名空间事件,我没有看到jQuery文档中引用的那些事件.您可能希望使用全局ajax事件(例如,ajaxComplete,ajaxError等). 您需要为ajaxError附加一个单独的处理程序来处理错误情况,或者只使用ajaxComplete事件代替ajax:success.除非你需要特定的错误处理,否则ajaxComplete是要走的路,因为你只需要编写/维护一个处理程序.从jQuery 1.8开始,全局事件在文档上触发.您需要将监听器附加到文档而不需要任何其他选择器: $(document).on('ajaxComplete',showDatePickers); 您可以在Ajax Events页面上阅读有关jQuery AJAX事件的更多信息. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- xml – xsl:template match属性中的正则表达式
- c# – IEnumerable从类[]但不是从结构[].为什么?
- c# – 如何使用EWS托管API保存ItemAttachments
- Oracle 11g 管理重做日志文件
- c# – 扩展Convert.ChangeType以根据请求生成用户
- 无法登录iOS actural Device MobileFirst Projec
- [cocos2dx_Lua]quick中的组件Component
- c# – .mdf“出现操作系统错误2(系统找不到指定的
- sqlite数据库入门支招--助你少走弯路
- VB.NET -从字符串“xxx”到类型“Double”的转换