我有一个使用jquery ui选项卡创建的选项卡面板,其中每个选项卡都加载了ajax。在每个选项卡上,我都有一些嵌套的表单。我使用formtastic创建表单,使用semantic_form_for创建嵌套表单。
我已经安装了client_side验证gem并在我的"正常"表单上工作。在选项卡面板中的表单上,它不执行任何操作。我猜测这可能是因为当用ajax加载选项卡内容时,需要将client_side_validation函数绑定到输入。有人有过这样的经历吗?如果您能告诉我从哪里开始调试这个问题,我将不胜感激。
Thanks in advance
尝试将此添加到有验证问题的选项卡
<%= 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 %>
我本能地不喜欢像第一个答案中建议的那样重新加载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文件中的一个方法,它将客户端验证属性绑定到表单上。