我无法使用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;
}
答案 0 :(得分:3)
网站所有者,请停止使用jammypeach或Stephen S.上面的代码。一些有效的SSN被正则表达式拒绝。
请参阅http://www.socialsecurity.gov/employer/randomization.html
之前未分配的区号是为了分配而引入的
SSN可以从2011年6月开始以“773”及以上开始,然后创建该线程。
请将([0-6]\d{2}|7[0-6]\d|77[0-2])
替换为\d{3}
- 现在我必须亲自去银行; - )
答案 1 :(得分:2)
你只需要添加一个检查,看看复选框是否,呃,检查。
请参阅第9行(或下面代码第2行)中的this updated fiddle,检查SSN是否有效:
$('#submitApplication').live('click', function() {
if ($('#noneSSN').is(':checked'))
{
alert("SUCCESS");
}
else
{
var isValid = $("#applicantForm").valid();
if (isValid) {
alert("SUCCESS");
}
}
return false;
});
如果选中该框,它将允许提交,否则它将要求正确的SSN。
答案 2 :(得分:0)
目前尚不清楚什么不能正常工作......
我还是看到了一些事情:
什么是notEqual
?这是你添加的方法吗?在additionnal methods script中提供了一个名为pattern
的方法以及插件。
depends
的目的是什么?添加规则required
以检查值是否为空,并添加isValidSSN: true
之类的规则来执行您自己的SSN验证。
仅在未选中复选框时才使用depends
(或required: function(element) { return $("#noSSN").is(":unchecked"); }
)来应用规则。
希望这有帮助,d。