我有以下html和js,但它没有触发文本输入字段模糊或表单提交的jquery.validate验证。如果我添加" required"直接归属于文本输入字段,默认错误消息反而出现。任何人都可以帮我弄清楚为什么以下不起作用?
<!doctype html>
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery.validate.min.js"></script>
<script type="text/javascript" src="jquery.validate.unobtrusive.min.js"></script>
</head>
<body>
<form id="test" action="test.html" method="post">
<input type="text" name="txtName" />
<input type="submit" name="btnSubmit" />
</form>
</body>
</html>
<script type="text/javascript">
$(document).ready(function(){
ValidateForm();
});
function ValidateForm(){
$.validator.unobtrusive.parse($("form"));
$('#test').validate({
rules: {
"txtName": "required"
},
messages: {
"txtName": "this name is required for sure!"
},
errorPlacement: function (error, element) {
$(element).parent().append(error);
},
onfocusout: function (element) { this.element(element); }
});
}
</script>
答案 0 :(得分:1)
<script type="text/javascript" src="jquery.validate.unobtrusive.min.js"></script>
为什么要包含unobtrusive
插件?
您自己调用unobstrusive
方法时无法同时使用.validate()
插件。
为什么?
因为unobtrusive
插件会根据HTML属性自动构建并调用.validate()
方法。
由于插件仅使用对.validate()
的第一次调用来初始化验证,因此它会自动忽略所有后续调用。因此,您对.validate()
的调用完全被忽略了。
如果我添加&#34;必需&#34;直接到文本输入字段,默认错误消息开始了。
由于unobtrusive
插件,jQuery Validate完全忽略了对.validate()
的调用。这就是为什么它仅在您将required
元素放在input
元素中时才有效。
完全删除unobtrusive
插件,效果很好: