我在让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/