Parsley.js 无法处理多页表单,使用数据欧芹组

标签 parsley.js

我在尝试使用 Parsley 验证多页表单时遇到了问题。我的客户使用多页 jquery 插件检索表单中的所有字段集,并逐步显示每个字段集中的问题。它还具有我可以自定义的内置验证功能,每次用户单击按钮进入下一步时都会调用该功能。

我已将我的复选框与 data-parsley-group='fieldset1' 组合在一起,在下一页上,data-parsley-group='fieldset2' 等等。然后,从内置验证函数中我的多页插件,我调用:

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

(page 是一个增量,从 1 开始)。如果 jQuery.fn.validatePage 返回 true,多页 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 元素上运行验证。我尝试使用排除选项来隐藏这些,但这也不适用于这个多页插件。

如有任何建议,我们将不胜感激。抱歉,如果此代码过于冗长,我已尝试包括所有可能相关的代码。

最佳答案

你需要在验证函数中添加一个json对象

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

请参阅 http://parsleyjs.org/doc/examples/multisteps.html 中的示例

关于Parsley.js 无法处理多页表单,使用数据欧芹组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25858845/

相关文章:

javascript - 使用 Parsley.js 验证字段后触发代码

Parsley.js - 如何向所需的验证器添加值

javascript - Parsley.js 验证未触发

ruby-on-rails - 在 Rails form_for 辅助字段中使用 ParsleyJS

javascript - 欧芹远程无效返回 null

javascript - 欧芹自定义验证器无法正常工作

parsley.js - 对依赖于其他字段的字段进行远程验证

javascript - parsley.js - 禁用最大长度验证

javascript - 解决所有错误后,如何使 data-parsley-errors-container ="#element"消失?