Parsley.js不使用data-parsley-group处理多页表单

时间:2014-09-16 00:16:35

标签: parsley.js

我在尝试使用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"/>&nbsp;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"/>&nbsp;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"/>&nbsp;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"/>&nbsp;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"/>&nbsp;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"/>&nbsp;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"/>&nbsp;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"/>&nbsp;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"/>&nbsp;Item 4
    </div>
</fieldset>
</form>

我已经花了好几个小时才按预期工作,但无济于事。还有其他技术值得研究吗?我看到Parsley 1.0有一个不同的多页解决方案,它没有在:hidden元素上运行验证。我尝试使用exclude选项来隐藏这些,但这也不适用于这个多页插件。

任何建议都将不胜感激。很抱歉,如果此代码非常详细,我尝试了包含所有可能相关的代码。

1 个答案:

答案 0 :(得分:0)

您需要将json对象添加到validate funciton

jQuery.fn.validatePage = function(page) {
    return $(this).parsley().validate({group:'fieldset' + page});
}

请参阅http://parsleyjs.org/doc/examples/multisteps.html

上的示例