jquery选项卡和客户端验证gem

时间:2011-09-16 11:04:48

标签: ruby-on-rails ruby jquery-ui validation

我有一个使用jquery ui选项卡创建的选项卡式面板,其中每个选项卡都加载了ajax。在每个选项卡上,我都有许多嵌套表单。我使用formtastic来创建表单,使用semantic_form_for来创建嵌套表单。

我安装了client_side验证gem并处理我的'普通'表单。在选项卡式面板中的表单上,它什么都不做。我猜这可能是因为当选项卡内容加载了ajax时,client_side_validation函数需要绑定到输入。有人有这方面的经验吗?甚至关于从哪里开始调试问题的建议也会非常感激......

提前致谢

2 个答案:

答案 0 :(得分:2)

尝试将此添加到具有验证问题的标签

<%= javascript_include_tag "rails.validations" %>  
<%= form_for @yourform, :validate => true do |f|%>
#Your code here
<% end %>

修改

<%= javascript_include_tag 'jquery-1.6.2.min' %>
<%= javascript_include_tag 'jquery-ui-1.8.14.custom.min' %>
<%= javascript_include_tag 'jquery_ujs', 'application' %>
<%= javascript_include_tag "rails.validations" %>  
<%= form_for @company, :validate => true do |f|%>
  <div class="field">
    <b>Company Name:<b><br />
    <%= f.text_field :name %>
  </div>
  <div class="field">
    <%= f.label :address %><br />
    <%= f.text_field :address %>
  </div>
  <div class="field">
    <%= f.label :telephone %><br />
    <%= f.text_field :telephone %>
  </div>
  <div class="field">
    <%= f.label :email %><br />
    <%= f.text_field :email %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

答案 1 :(得分:0)

我本能地不喜欢第一个答案中建议的重新加载js文件的想法,尽管答案有助于指出我正确的方向。果然,进一步说,重新导入的文件开始引起他们自己的问题,所以我做了一些挖掘。要设置选项卡,我现在使用这样的js:

    contacttabs.tabs({
            load: function(event, ui){
                   $('a.load_to_enquiries_tab').live("click", function() {
                        $('#enquiries').load(this.href, function() {
                              set_styles();
                              $(function() {
                                    $('form[data-validate]').validate();
                              })
                              return false;
                        });
                        return false;
                  });
});

关键行是回调函数,它在选项卡中的表单上调用validate()。这是client_side_validation validations.js文件中的一种方法,它将客户端验证优度绑定到表单。这对我现在有用 - 希望它也可以帮助别人。