Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 验证插件未验证add方法中的正则表达式_Jquery_Jquery Validate - Fatal编程技术网

Jquery 验证插件未验证add方法中的正则表达式

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

我尝试过使用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/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);
});