Jquery 为什么不验证呢?

Jquery 为什么不验证呢?,jquery,forms,validation,Jquery,Forms,Validation,我正在验证我的表格, 但由于某些原因,SSN字段无法工作:( 我有: validate: function () { contact.message = ''; if (!$('#contact-container #contact-name').val()) { contact.message += 'Name is required. '; } var ssn = $('#contact-con

我正在验证我的表格, 但由于某些原因,SSN字段无法工作:(

我有:

    validate: function () {
        contact.message = '';
        if (!$('#contact-container #contact-name').val()) {
            contact.message += 'Name is required. ';
        }

        var ssn = $('#contact-container #contact-ssn').val();
        if (!ssn) {
            contact.message += 'SSN is required. ';
        }
        else {
            if (!contact.validateSSN(ssn)) {
                contact.message += 'SSN is invalid. ';
            }
        }

        var email = $('#contact-container #contact-email').val();
        if (!email) {
            contact.message += 'Email is required. ';
        }
        else {
            if (!contact.validateEmail(email)) {
                contact.message += 'Email is invalid. ';
            }
        }

        if (!$('#contact-container #contact-message').val()) {
            contact.message += 'Message is required.';
        }

        if (contact.message.length > 0) {
            return false;
        }
        else {
            return true;
        }
    },

我的电子邮件部分工作正常,但SSN部分只接受任何内容,因为它不是空的。我缺少什么? 谢谢

我想你需要-

 if (!/^[0-9]{9}$/.test(ssn))
而不是-

 if (!/^[0-9]{9}$/)

这将告诉您
ssn
值是否与您的正则表达式匹配。我认为
!/^[0-9]{9}$/
将始终返回false。

!/^[0-9]{9}$/将始终返回false,因为/../part计算结果为正则表达式对象,而对象的计算结果始终为true

您可能希望
if(!/^[0-9]{9}$/.test(ssn))

编辑:更简单:

validateSSN: function (ssn) {
  return /^[0-9]{9}$/.test(ssn);
}

你能用失败的代码和测试用例创建一个JSFIDLE.net吗?ty you:)但是在更改代码后它仍然不能工作,我修复了它。。。。我必须删除
否则{return true;}
这很危险,因为这样它将返回
未定义的
。请参阅我的最新答案。
test
方法将始终返回布尔值。
validateSSN: function (ssn) {
  return /^[0-9]{9}$/.test(ssn);
}