我在让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;
}

最佳答案

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

请参阅this updated fiddle,在第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。

关于javascript - 使用SSN正则表达式,掩码输入和依赖进行Jquery验证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7689535/

10-12 15:57