jQuery 验证 .valid() 函数不起作用
jQuery Validate .valid() function doesn't work
如果我这样做:
$('#form').validate({
// ....
})
然后我隐藏表格 #form
:
$('#form').hide() .
然后我检查 $('#form').valid()
,我总是得到 true
,即使表格应该是无效的。
示例:单击 checkTestValid
,当表单显示时文本字段中没有任何内容(它会提醒 false
),然后使用 clickHide
隐藏表单,然后使用 checkTestValid
再次检查(它提醒 true
):
$('#testForm').validate({
rules: {
testInput: {
required: true,
}
},
});
$(".btnTest").click(function() {
$("#tab2").hide();
})
$(".btnTest2").click(function() {
$("#tab2").show();
})
$(".clickTestVelid").click(function() {
alert($("#testForm").valid())
})
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.0/jquery.validate.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.0/additional-methods.js"></script>
<div id="tab1">
<button class="btnTest">clickHide</button>
<button class="btnTest2">clickShow</button>
</div>
<div id="tab2">
<form id="testForm">
<input required value="" name="testInput">
</form>
</div>
<button class="clickTestVelid">clickTestValid</button>
默认情况下,它会忽略隐藏元素,因为默认值为 ignore
option is ":hidden"
so update the ignore
option。
$('#testForm').validate({
// updated to ignore class selector to ignore only elements with class .ignore
ignore: ".ignore"
rules: {
testInput: {
required: true,
}
},
});
如果我这样做:
$('#form').validate({
// ....
})
然后我隐藏表格 #form
:
$('#form').hide() .
然后我检查 $('#form').valid()
,我总是得到 true
,即使表格应该是无效的。
示例:单击 checkTestValid
,当表单显示时文本字段中没有任何内容(它会提醒 false
),然后使用 clickHide
隐藏表单,然后使用 checkTestValid
再次检查(它提醒 true
):
$('#testForm').validate({
rules: {
testInput: {
required: true,
}
},
});
$(".btnTest").click(function() {
$("#tab2").hide();
})
$(".btnTest2").click(function() {
$("#tab2").show();
})
$(".clickTestVelid").click(function() {
alert($("#testForm").valid())
})
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.0/jquery.validate.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.0/additional-methods.js"></script>
<div id="tab1">
<button class="btnTest">clickHide</button>
<button class="btnTest2">clickShow</button>
</div>
<div id="tab2">
<form id="testForm">
<input required value="" name="testInput">
</form>
</div>
<button class="clickTestVelid">clickTestValid</button>
默认情况下,它会忽略隐藏元素,因为默认值为 ignore
option is ":hidden"
so update the ignore
option。
$('#testForm').validate({
// updated to ignore class selector to ignore only elements with class .ignore
ignore: ".ignore"
rules: {
testInput: {
required: true,
}
},
});