【问题标题】:How do I validate all form fields in a div using parsley.js?如何使用 parsley.js 验证 div 中的所有表单字段?
【发布时间】:2017-03-17 22:59:52
【问题描述】:

我有一个带有表单字段的 div 和一个按钮,我想让 parsley 验证该 div 中具有正确 data-validate 属性的所有表单字段。无论 div 中有多少表单字段,我都需要它工作。所以它需要处理输入、文本区域和选择字段。

HTML:

<div id="parsley-div">
  <div class="form-group">
    <label for="city">City</label>
    <input id="city-test" type="text" class="form-control" data-parsley-required data-parsley-required-message="Please enter a city name.">
  </div>
  <button class="btn btn-primary">Save Changes</button>
</div>

JS:

$('#parsley-div').find('button').click(function(){
  $('#parsley-div').parsley().validate();
});

很遗憾,这不起作用。我注意到如果表单字段周围有表单标签,它会起作用,但我需要它是一个 div。我创建了一个显示两种情况的 JSFiddle:https://jsfiddle.net/8rkxzjx1/2/

如何让 parsley 验证指定 div 中具有 data-parsley 属性的所有表单字段?如果可能,请编辑 JSFiddle 以显示正确的实现。谢谢。

编辑:

我发现这行得通,但感觉效率不高:

$('#parsley-div').find( "input, textarea, select" ).each(function (index, value) {   
  $(this).parsley().validate();
});

【问题讨论】:

  • zeck,我已经更新了答案。这些是我想出的。我不确定是否有更好的方法来实现这一点。

标签: javascript forms validation parsley.js


【解决方案1】:

你可以使用

$('#parsley-div :input:not(:button)').parsley().validate();

fiddle

编辑

看起来上面的代码不起作用。以下可以作为OP建议使用。

$('#parsley-div :input:not(:button)').each(function (index, value) { 
  $(this).parsley().validate();
});

这是新的fiddle

或者可以将内容包装在表单元素中,然后进行如下验证:

$("#parsley-div").wrap("<form id='parsley-form'></form>");
$('#parsley-div').find('button').click(function() {
    $('#parsley-form').parsley().validate();
});

或者由于 OP 不希望在 Dom 中有表单元素,可以将内容包装在表单元素中,然后可以在验证后删除表单。

$('#parsley-div').find('button').click(function() {
    $("#parsley-div").wrap("<form id='parsley-form'></form>");
    $('#parsley-form').parsley().validate();
    $("#parsley-div").unwrap();
});

链接到fiddle-wrapfiddle-wrap-unwrap

【讨论】:

  • 感谢您的回复,但我也需要它来处理 textareas 和选择。
  • 我想出了一个适用于所有这些情况的解决方案(请参阅描述中的编辑区域),但感觉效率不高,我觉得应该有一个更清洁的解决方案。
  • @zeckdude $('#parsley-form').parsley().validate(); 看起来和.each(function ()) 完全一样。所以你的解决方案似乎是最合适的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-08
  • 2016-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多