我的表格看起来像这样:
= form_for(@user, :remote=> true, :url => @url, html: {role: :form, 'data-model' => @params_key}) do |f|
= button_tag 'Register', class: 'btn btn-primary submit-button', type: 'submit',
:data => {:disable_with => 'Bamm'}
当我按下按钮时,它会更改文本和所有内容,但当导轨回答按钮值时,请不要更改回“注册'
这是正确的行为吗?
答案 0 :(得分:0)
您的表单有":remote =>真"在它,所以这是一个ajax请求。控制器操作(更新或创建)完成后,它会触发相应的.js.erb文件(update.js.erb或create.js.erb)。此文件中的JavaScript定义了在页面上更改/刷新的元素。因此,看起来您的JavaScript更改了"文本和所有内容",但不是您的表单,因此您的表单仍然处于禁用模式。
尝试删除":remote =>真"部分来自您的表单,您的页面将完全刷新,您的按钮将再次启用。或者在相应的.js.erb文件中添加正确的表单刷新。
答案 1 :(得分:0)
找到答案。在此site
我创建了一个函数,当Ajax返回错误以将错误附加到正确的字段时调用该函数。在该功能内部,我添加了以下调用
在我的user.coffee中,我有以下代码:
$ ->
$(document).bind('ajaxError', 'form#form_name', ( (event, jqxhr, settings, exception) ->
$(event.data).render_form_errors( $.parseJSON(jqxhr.responseText) )
))
$.fn.render_form_errors = (errors) ->
...
$.rails.enableFormElements($($.rails.formSubmitSelector));
...
它会再次运作