【问题标题】:Does one validation rule suppress the other validation rule in jquery validation plugin?一个验证规则是否会抑制 jquery 验证插件中的另一个验证规则?
【发布时间】:2011-10-25 17:52:03
【问题描述】:

我有以下代码

<html>
<head>
<title>Untitled Document</title>
<script type="text/javascript" src="js/jquery-1-4-2.js"></script>
<script type="text/javascript" src="js/jquery_validate.js"></script>
<script type="text/javascript">

$(document).ready(function(){

$("#form1").validate({
    rules: {
            fld1: {
                methodtwo: true,
                methodone: true
            }
           },
    messages: {
        fld1: {
            methodtwo: "<br> 2Wrong Project Name.",
            methodone: "<br> 1Wrong Project Name."

              }
        }

      });
});   

$.validator.addMethod('methodone', function (value) { 
    return /^[a-zA-Z0-9]+$/.test(value); 
}, 'wrong1.');

$.validator.addMethod('methodtwo', function (value) { 
    return /^[a-zA-Z^0-9]+$/.test(value); 
}, 'wrong2.');



</script> 


</head>
<body>
<form  id="form1"name="form1" action="" method="get">
<table width="80%"  border="0">
  <tr>
  <td><input type="text" name="fld1" id="idfld1"></td>
</tr>
 <tr>
 <td><input type="submit" name="submit" id="idsubmit"></td>
</tr>
</table>
</form>
</body>
</html>

执行上述代码后,我期待如果我们进入

  1. 字母 a-zA-z 然后它将接受输入并接受
  2. 任何特殊字符都会显示错误并显示错误
  3. 但是当我们输入数字 0-9 时,我期待它会显示方法二的错误消息。但它接受了它。

请解释一下为什么会这样?当我正在检查如果两个相反的验证规则应用于一个字段时会发生什么。

请朋友们解释一下,这段代码有什么问题吗?或者一个验证规则抑制了另一个?

谢谢!

【问题讨论】:

    标签: jquery regex jquery-validate


    【解决方案1】:

    ^ 仅在它是字符类中的第一个字符时才表示“不是”。在任何其他位置,它表示文字 ^

    所以你可能想要

    /^\D+$/
    

    对于方法 2。(\D 表示“除数字之外的任何字符”,并且已经包含 a-zA-Z。)

    但是,我不确定您真正想要做什么。您可以将所有这些规则组合成一个正则表达式(但目前它们确实相互矛盾,所以有点令人费解)。

    【讨论】:

      【解决方案2】:

      正如 Tim 正确指出的那样,^ 插入符号仅是字符类中的第一个字符时的元字符。

      在编写正则表达式时可以提供帮助的一件事是用英语(或您选择的母语)准确地写出正则表达式匹配的内容。让我们用你的两个正则表达式来做到这一点:

      第一个正则表达式: /^[a-zA-Z0-9]+$/ 表示:“在字符串的开头匹配一个或多个可以是字母或数字的字符,然后匹配字符串的结尾。 "

      第二个正则表达式: /^[a-zA-Z^0-9]+$/ 表示:“在字符串的开头匹配一个或多个可以是字母、^ 插入符号或数字的字符,然后匹配字符串的结尾。”

      当您这样拼写时,您的错误会立即显现出来。对于第二个正则表达式,您只需从允许的字符的字符类中删除数字表达式,如下所示:

      新的正则表达式: /^[a-zA-Z]+$/ 表示:“在字符串的开头匹配一个或多个字母字符,然后匹配字符串的结尾。” p>

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多