Jquery 验证插件未验证add方法中的正则表达式
我尝试过使用jquery验证插件进行基本的正则表达式验证,但问题是它只适用于规则“required”,而不适用于add方法regexvalid。如何做到这一点 提前感谢,Jquery 验证插件未验证add方法中的正则表达式,jquery,jquery-validate,Jquery,Jquery Validate,我尝试过使用jquery验证插件进行基本的正则表达式验证,但问题是它只适用于规则“required”,而不适用于add方法regexvalid。如何做到这一点 提前感谢, <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/19
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type="text/javascript" src="js/jquery-1.9.0.mini.js" > </script>
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.11.0/jquery.validate.js" ></script>
<script type="text/javascript">
$(document).ready(function () {
jQuery.validator.addMethod("regexvalid",function(element,value){
return this.optional(element)|| /[0-9]*/.test(value);
});
$('#logform').validate({
rules: {
txtUsr: {
required: true,
regexvalid:true
},
txtPass: {
required: true
}
},
messages: {
txtUsr: {
required: 'Please enter username',
regexvalid:'valid numbers'
},
txtPass: {
required: 'Please enter password'
}
}
});
});
</script>
<style type="text/css">
.error
{
border-color:Red;
border-style:solid;
border-width:1px;
}
#signupForm label.error {
margin-left: 10px;
width: auto;
display: inline;
}
</style>
</head>
<body>
<div id='LoginDiv' style='width:400px;height:300px;background-color:green;'>
<form id='logform'>
User Name : <input type="text" id='txtUsr' name='txtUsr' style='margin-top:12px'/>
<br/>
<br/>
Password : <input type="text" id='txtPass' name='txtPass' />
<br/>
<br/>
<input type="submit" id='btnSubmit' value='Submit' />
</form>
</div>
</body>
</html>
$(文档).ready(函数(){
jQuery.validator.addMethod(“regexvalid”),函数(元素,值){
返回此.optional(element)| |/[0-9]*/.test(value);
});
$('#logform')。验证({
规则:{
txtUsr:{
要求:正确,
regexvalid:true
},
txtPass:{
必填项:true
}
},
信息:{
txtUsr:{
必填项:“请输入用户名”,
regexvalid:“有效数字”
},
txtPass:{
必需:“请输入密码”
}
}
});
});
.错误
{
边框颜色:红色;
边框样式:实心;
边框宽度:1px;
}
#signupForm label.error{
左边距:10px;
宽度:自动;
显示:内联;
}
用户名:
密码:
这里有两个问题
1)传入自定义方法的变量是向后的:
,值
排在第一位
jQuery.validator.addMethod("regexvalid",function(value, element){
2)我不是正则表达式的专家,您也没有解释它应该做什么,但它似乎是无效的。如果要测试该值是否为数字,请使用。否则,regexvalid
方法本身就可以工作,您只需要适当地调整regex
这是使用默认number
方法中的regex函数作为演示
jQuery.validator.addMethod("regexvalid", function (value, element) {
return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(value);
});
演示:
编辑,关于您的正则表达式: 您的正则表达式,
/[0-9]*/.test(value)
似乎什么都不做,因为它实际上什么都不做
匹配任何数字[0-9]
告诉它匹配前面表达式的“零个或多个”*
*
,无论[0-9]
如何,测试都将始终返回true
您从未解释过这个自定义方法应该做什么,但是您提供的regex
实际上是没有实际意义的,因为它似乎总是满足所有条件
来源:你希望你的正则表达式做什么?换句话说,您试图创建的测试规则是什么?
jQuery.validator.addMethod("regexvalid", function (value, element) {
return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(value);
});