在DIV中使用display:none的字段进行jquery验证

时间:2015-01-10 00:32:06

标签: jquery jquery-validate

我在显示的字段上遇到问题:无... 我需要在单击提交表单按钮后,即使要验证的字段在div中,也显示错误消息,显示:无设置。 我找到解决方案并尝试添加到jQuery代码设置

ignore: []

但这不会改变任何事情。使用名为'moreurlinput'的类查看div,他获得了内联样式显示:none,但如果将其更改为显示:inline(block,table等),则会出现验证错误。

HTML

<form id="post" action="http://m.onet.pl" method="post" class="validatedForm">
<div class="moreurlinput" style="display:none">
    <input class="moreurl center" type="text" name="moreurl" id="moreurl" />
</div>
<div>
    <button type="submit" />Add</button>
</div>
</form>

jquery的

jQuery('.validatedForm').validate({
errorElement: "div",
errorClass: 'validate-error',
rules: {
    "moreurl": {
        required: true
    }
},
messages: {
    moreurl: "Please define 'More' URL value"
}

});

HERE http://jsfiddle.net/Lprn89o8/2/

1 个答案:

答案 0 :(得分:4)

验证工作完全符合预期。您的整个问题是,隐藏的div中的错误元素也是 内部,因此无法看到该消息。

解决方案是使用errorPlacement选项将隐藏div消息放在之外。

errorPlacement: function(error, element) {
    error.insertAfter($(element).parent());
},

您还需要ignore: []选项,以便不会忽略任何内容并验证您的隐藏元素。

工作演示:http://jsfiddle.net/Lprn89o8/4/


替代方案只需将display:none移至input元素,即可让div保持可见。

替代方案:http://jsfiddle.net/Lprn89o8/5/


修改

button元素的HTML无效。你不应该使用&#34;自我关闭&#34;标记,因为<button>元素本身是一个具有结束标记的容器

<button type="submit" />Add</button>

应该是......

<button type="submit">Add</button>