Jquery验证与SSN Regex,屏蔽输入和依赖

Jquery Validation with SSN Regex, Masked Input and Depends

本文关键字:屏蔽 输入 依赖 Regex 验证 SSN Jquery      更新时间:2023-09-26

我遇到了麻烦,让Jquery验证工作与以下规则

我用SSN格式屏蔽了字段,验证必须不允许在没有完整SSN的情况下提交此信息。我有一个工作的正则表达式函数,拒绝非ssn。我需要它不允许空白提交以及(掩码仅适用于如果字段是onFocus)。最后但并非最不重要的是,如果另一个复选框被选中(#noSSN),该字段是不需要的。

我已经添加了一个JSfiddle页面来帮助:http://jsfiddle.net/B2UpW/3/

似乎在小提琴页面上工作有点不同。希望这对你有帮助!

编辑:我还没有收到任何回复…你对我的问题有什么疑惑吗?任何建议,以帮助找到一些援助是欢迎的!
$("#ssn").mask("999-99-9999");
$.validator.addMethod("notEqual", function(value, element, param) {
  return this.optional(element) || value !== param;
}, "Please choose a value!");           
$("#applicantForm").validate({
    rules: {        
        ssn: {
            notEqual: "___-__-____", 
            required: {
                depends: function(element) {
                    return ($("#ssn").val() == ""
                            || isValidSSN($("#ssn").val()) 
                            || $("#noSSN:unchecked"));
                }                   
            }                   
        }
    },
    messages: {
        ssn: 'Please enter a social security number.'
    }
});

function isValidSSN(value) { 
    var re = /^([0-6]'d{2}|7[0-6]'d|77[0-2])([ '-]?)('d{2})'2('d{4})$/; 
    if (!re.test(value)) { return false; } 
    var temp = value; 
    if (value.indexOf("-") != -1) { temp = (value.split("-")).join(""); } 
    if (value.indexOf(" ") != -1) { temp = (value.split(" ")).join(""); } 
    if (temp.substring(0, 3) == "000") { return false; } 
    if (temp.substring(3, 5) == "00") { return false; } 
    if (temp.substring(5, 9) == "0000") { return false; } 
    return true; 
}

网站所有者,请停止使用上面来自jammypeach或Stephen S.的代码。一些有效的ssn被它们的regexp拒绝。

见http://www.socialsecurity.gov/employer/randomization.html

以前未分配的区域号码被引入分配

自2011年6月以来,在该线程创建之前,ssn可以以"773"及以上开头。

请将([0-6]'d{2}|7[0-6]'d|77[0-2])替换为'd{3} -现在因为你的缘故我必须亲自去银行;-)

您只需要添加一个复选框来查看复选框是否被选中。

查看更新后的代码,在第9行(或下面代码中的第2行)左右检查SSN是否有效:

$('#submitApplication').live('click', function() {
    if ($('#noneSSN').is(':checked'))
    {
        alert("SUCCESS");
    }
    else
    {
        var isValid = $("#applicantForm").valid();
        if (isValid) {
            alert("SUCCESS");
        }
    }
    return false;
});

如果复选框被选中,它现在将允许提交,否则它将要求一个正确的SSN

不太清楚到底是什么出了问题…

我看到了一些东西:

  1. notEqual是什么?这是你添加的方法吗?

  2. 在附加方法脚本中有一个叫做pattern的方法。
  3. 你们的depends的目的是什么?添加规则required来检查值是否为空,添加规则isValidSSN: true来执行您自己的SSN验证

  4. 仅在未选中复选框时使用depends(或required: function(element) { return $("#noSSN").is(":unchecked"); })应用规则