不应该在回答后重新填充按钮值

时间:2015-08-12 22:06:15

标签: jquery ruby-on-rails

我的表格看起来像这样:

= 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'}

当我按下按钮时,它会更改文本和所有内容,但当导轨回答按钮值时,请不要更改回“注册'

这是正确的行为吗?

2 个答案:

答案 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));
  ...

它会再次运作