我在尝试使用Parsley验证多页表单时遇到了问题。我的客户端使用多页面jquery插件来检索表单中的所有字段集,并逐步显示每个字段集中的问题。它还有一个我可以自定义的内置验证功能,每次用户单击按钮进入下一步时都会调用该功能。
我已将复选框与data-parsley-group =' fieldset1'分组,并在下一页上,data-parsley-group =' fieldset2'等然后,从我的多页插件的内置验证功能中,我打电话:
jQuery.fn.validatePage = function(page) {
return $(this).parsley().validate('fieldset' + page);
}
(页面是一个增量,从1开始)。如果jQuery.fn.validatePage返回true,则multipage jquery插件会递增页面并继续显示下一步。
Parsley验证与第一页上的预期完全一致。但是,一旦验证从第1页返回true,然后显示第二页,则parsley validate始终返回true,即使必填字段为空。这几乎就好像我需要重置'欧芹验证,但由于我在特定的数据 - 欧芹组上进行验证,因此这不是必需的。这是HTML标记(在代码上加上我,尝试清理它,但它现在通过我们的CMS动态创建:
<form id="survey-form" method="post" data-parsley-validate="data-parsley-validate" data-parsley-errors-container="#survey-form .error-container" class="js_multipage-form">
<div class="error-container"></div>
<fieldset>
<div class="title section">
Question 1
</div>
<div class="checkbox section">
<input type="checkbox" name="selectiongroup" value="Item 1" data-parsley-required="true" data-parsley-mincheck="1" data-parsley-trigger="ifChanged" data-parsley-group="fieldset1" class="form_field form_field_checkbox"/> Item 1
<input type="checkbox" name="selectiongroup" value="Item 2" data-parsley-required="true" data-parsley-mincheck="1" data-parsley-trigger="ifChanged" data-parsley-group="fieldset1" class="form_field form_field_checkbox"/> Item 2
<input type="checkbox" name="selectiongroup" value="Item 3" data-parsley-required="true" data-parsley-mincheck="1" data-parsley-trigger="ifChanged" data-parsley-group="fieldset1" class="form_field form_field_checkbox"/> Item 3
<input type="checkbox" name="selectiongroup" value="Item 4" data-parsley-required="true" data-parsley-mincheck="1" data-parsley-trigger="ifChanged" data-parsley-group="fieldset1" class="form_field form_field_checkbox"/> Item 4
<input type="checkbox" name="selectiongroup" value="Item 5" data-parsley-required="true" data-parsley-mincheck="1" data-parsley-trigger="ifChanged" data-parsley-group="fieldset1" class="form_field form_field_checkbox"/> Item 5
</div>
</fieldset>
<fieldset>
<div class="title section">
Question 2
</div>
<div class="checkbox section">
<input type="checkbox" name="selectiongroup" value="Item 1" data-parsley-required="true" data-parsley-mincheck="1" data-parsley-trigger="ifChanged" data-parsley-group="fieldset2" class="form_field form_field_checkbox"/> Item 1
<input type="checkbox" name="selectiongroup" value="Item 2" data-parsley-required="true" data-parsley-mincheck="1" data-parsley-trigger="ifChanged" data-parsley-group="fieldset2" class="form_field form_field_checkbox"/> Item 2
<input type="checkbox" name="selectiongroup" value="Item 3" data-parsley-required="true" data-parsley-mincheck="1" data-parsley-trigger="ifChanged" data-parsley-group="fieldset2" class="form_field form_field_checkbox"/> Item 3
<input type="checkbox" name="selectiongroup" value="Item 4" data-parsley-required="true" data-parsley-mincheck="1" data-parsley-trigger="ifChanged" data-parsley-group="fieldset2" class="form_field form_field_checkbox"/> Item 4
</div>
</fieldset>
</form>
我已经花了好几个小时才按预期工作,但无济于事。还有其他技术值得研究吗?我看到Parsley 1.0有一个不同的多页解决方案,它没有在:hidden元素上运行验证。我尝试使用exclude选项来隐藏这些,但这也不适用于这个多页插件。
任何建议都将不胜感激。很抱歉,如果此代码非常详细,我尝试了包含所有可能相关的代码。
答案 0 :(得分:0)
您需要将json对象添加到validate funciton
jQuery.fn.validatePage = function(page) {
return $(this).parsley().validate({group:'fieldset' + page});
}
上的示例