jQuery验证隐藏字段

时间:2016-09-28 09:22:11

标签: jquery jquery-validate

我正在尝试通过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

2 个答案:

答案 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/