我正在尝试通过Jquery Validator提交表单时验证元素的数量。原因是我们希望至少有一个图像存在,但我们不直接上传它们,而是首先显示预览。所以我需要以某种方式计算它们并验证至少有一个存在。
我尝试过使用隐藏字段as described here,但它根本无效。测试字段验证但由于某种原因,我自己的规则甚至没有被触发。我的实施有什么问题?
隐藏的字段技巧不再起作用,它似乎不再验证隐藏的输入。
<form method="post" accept-charset="utf-8" id="submit-work-form" role="form" action="/" novalidate="novalidate">
<div class="form-group">
<input type="text" required="true" name="title"/>
<input type="hidden" name="image_count" required="required" data-rule-validcmsimagecount="true" aria-required="true">
<div class="photos">
<!-- containers go here -->
</div>
</div>
<div class="submit"><input type="submit" class="btn btn-black btn-default" value="Submit"></div>
</form>
JS:
$.validator.addMethod("validcmsimagecount", function(value, element) {
alert('Doesn\'t work');
return $('.photo-container').length > 0;
}, "You must add at least one image.");
$('#submit-work-form').validate({
submitHandler: function (form) {
form.submit();
}
});
您也可以尝试Jsfiddle。
答案 0 :(得分:2)
这可能是this post的副本,但是因为我更新了你的小提琴以修复它,我想我会发布作为答案。您似乎需要启用隐藏字段的验证并从隐藏字段中删除required
属性。完成后,验证将会运行,请参阅更新的fiddle here,主要更改是添加ignore
属性:
$('#submit-work-form').validate({
ignore: [],
submitHandler: function (form) {
form.submit();
}
});
答案 1 :(得分:-1)
默认情况下,Jquery验证忽略隐藏字段,您可以通过设置忽略选项强制验证隐藏字段,如下所示
$('#myform').validate({
ignore: [],
// any other options and/or rules
});
jQuery Validate - Enable validation for hidden fields
以下是您的问题的修改示例 https://jsfiddle.net/9hoa1mrd/3/