【问题标题】:Client side validations gem not working if I fetch form via ajax request如果我通过 ajax 请求获取表单,客户端验证 gem 不起作用
【发布时间】:2012-12-18 12:16:38
【问题描述】:

如果我使用 ajax 请求获取 simple_form,客户端验证 gem 不起作用..

<%= link_to 'Add +', new_group_path, :remote => true, :id => "new_group_link" %>

现在表单新组将显示出来,它不会触发客户端验证。

我遇到了客户端函数未与表单绑定的问题。 (javascript assets 中指定的函数。)

但是我该如何触发这些功能呢??

编辑

想想标准的脚手架形式。因此,根据上面指定的 link_to 标记。 new_group_path 将执行新操作并使用 respond_to 块,将呈现 new.js.erb 文件。对。这是new.js.erb中的代码

  $('#new_group_link').hide().after('<%= j render("form") %>');

【问题讨论】:

  • 你能提供更多代码吗?您的资产是否具有 document.onready 绑定?
  • 据我了解,您通过 ajax 请求获取了表单,但它没有得到 onsubmit 和其他处理程序,应该检查表单?显示获取表单的 js 代码。
  • @eicto 更新了我的问题..
  • 这不是 js :) 它是模板。
  • @MohitJain 我的解决方案对你有用吗?

标签: jquery ajax ruby-on-rails-3 simple-form client-side-validation


【解决方案1】:

当你得到一个带有 ajax 的表单时,你应该自己启用客户端验证。这是link:

$(new_form).enableClientSideValidations();

【讨论】:

    【解决方案2】:

    如果您希望客户端验证触发通过 ajax 加载的所有表单,请在 main.js 中的某处使用:

    $(document).ajaxSuccess(function(){
        if($('form[data-validate]').length){
            $('form[data-validate]').enableClientSideValidations();
        }
    });
    

    当然,您应该在表单中输入 :validate =&gt; true 才能使其正常工作。

    【讨论】:

      【解决方案3】:

      从文档中发现:


      在您的 Gemfile 中添加以下内容:

      gem 'simple_form'
      gem 'client_side_validations'
      gem 'client_side_validations-simple_form'
      

      Order matters here.SimpleForm和ClientSideValidations

      需要 required before ClientSideValidations-SimpleForm.


      在您的 FormBuilder 中,您只需要启用验证:

      <%= form_for @user, :validate => true do |f| %>
      

      这应该足以让你继续前进。

      默认情况下,验证器将被序列化并嵌入到标记之后的&lt;script&gt; 标记中。如果您想在其他地方呈现该 &lt;script&gt; 标签,您可以通过将名称传递给 :validate 来做到这一点

      <%= form_for @user, :validate => :user_validators do |f| %>
      

      如果您通过 AJAX 将新表单呈现到页面中,则需要启用该表单以进行验证:

      $(new_form).enableClientSideValidations();
      

      您应该将此附加到新 HTML 呈现时触发的事件。

      如果您向现有表单引入新输入,您可以使用相同的功能:

      $(new_input).enableClientSideValidations();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-20
        • 1970-01-01
        • 2015-02-26
        • 2018-09-30
        相关资源
        最近更新 更多