jQuery 验证 - 调用某些元素的 .valid() 方法不会清除错误
jquery validation - calling .valid() method of some element is not clearing the error
我正在使用jquery验证插件来验证我的表单。
https://jqueryvalidation.org/
当我在另一个元素验证中调用某个元素的 .valid() 方法时,当前元素错误消息不会被删除。
假设我有元素 E1 和 E2 .元素 E1 的验证方法是方法 1。在方法1中,如果我调用E2.valid()以编程方式触发验证。即使认为该元素有效,E1 中的错误消息也不会被删除。
请找到代码。
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Validate IP Address using jQuery</title>
<script type="text/javascript"
src="http://ajax.microsoft.com/ajax/jQuery/jquery-1.4.2.min.js">
</script>
<script type="text/javascript" src=
"http://ajax.microsoft.com/ajax/jquery.validate/1.7/jquery.validate.min.js">
</script>
<script type="text/javascript">
$(document).ready((function() {
$.validator.addMethod('IP1Checker', function(value) {
$("#ip2").valid();
return isValidIPAddress(value);
}, 'Invalid IP address');
$.validator.addMethod('IP2Checker', function(value) {
return isValidIPAddress(value);
}, 'Invalid IP address');
$('#form1').validate({
rules: {
ip: {
required: true,
IP1Checker: true
},
ip2: {
required: true,
IP2Checker: true
}
}
});
function isValidIPAddress(value) {
var isValid = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)'.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)'.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)'.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(value);
if (isValid && (value === "0.0.0.0" || value === "255.255.255.255")) {
isValid = false;
}
return isValid;
}
}));
</script>
</head>
<body>
<form id="form1">
<input id="ip" name="ip" type="text" />
<input id="ip2" name="ip2" type="text" />
<input id="Submit2" type="submit" value="submit" />
</form>
</body>
</html>
谢谢。
首先,jQuery v1.4.2 和 jQuery Validate v1.7 非常古老(大约 2010 年),应该更新。
$.validator.addMethod('IP1Checker', function(value) {
$("#ip2").valid(); // <- you shouldn't do this
return isValidIPAddress(value);
}, 'Invalid IP address');
不应从 .addMethod()
方法中调用 .valid()
,因为它可能会将所有内容放入循环中。 .addMethod()
方法仅用于创建新的验证规则,不适用于其他函数,例如以编程方式触发验证测试。 (验证测试在特定字段或窗体上运行所有规则。 有效性规则根据一个特定规则评估一个特定字段。
您甚至不需要自定义方法来检查 IP 地址。 只需使用插件additional-methods.js
文件中已内置的ipv4
规则即可。
$('#form1').validate({
rules: {
ip: {
required: true,
ipv4: true
},
ip2: {
required: true,
ipv4: true
}
}
});
演示:https://jsfiddle.net/p5gn6zhe/
至于在字段 #1 的自定义 IP 规则中调用字段 #2 上的.valid()
;没有清楚地解释为什么要这样做。 您是否希望字段 #2 验证取决于字段 #1 是否已填写? 如果是这样,那完全是另一回事。
否则,您将使用外部处理程序触发.valid()
。
$('#ip').on('keyup blur', function() {
$("#ip2").valid();
});
演示 2:https://jsfiddle.net/p5gn6zhe/2/
相关文章:
- jQuery AJAX Post方法错误(语法错误)
- 如何从 MVC4 链接调用 Javascript 方法(错误 JavaScript 运行时错误:对象不支持此操作)
- 谷歌地图javascript多个方法错误
- 检查对话框是否为 Open 会引发“初始化前无法在对话框上调用方法”错误
- 当输入值已更改时,html() 方法错误
- 对象不支持 IE7 jQuery 中的此属性或方法错误
- jQuery.validation 在生日年龄验证中添加方法错误
- 木偶/骨干应用程序中没有方法错误
- 使用此 javascript 在 IE7 中收到“对象不支持此属性或方法”错误,以及选项卡未正确定位的问题
- “初始化前无法在工具提示上调用方法”错误,当我添加 jquery-ui 库时
- 谷歌图表绘制()方法错误类型时给定数据表
- Javascript:随机“对象没有方法”错误,即使使用 jquery.getScript()
- 在对象中调用对象方法 - 错误:无法读取未定义的属性
- 调用原型的重写方法,然后调用下一个原型的重写方法错误
- 方法错误:未定义方法名称
- “对象 [对象对象] 没有方法”错误在线,但不在本地主机上!为什么
- 对象在没有冲突后没有方法错误
- AJAX POST请求上没有方法错误轨道
- “
没有方法”错误,用于似乎存在的对象 - 对象在 JavaScript 中没有方法错误