为什么不验证?

时间:2011-11-23 21:51:28

标签: jquery forms validation

我试图验证我的表单, 但由于某种原因, 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;
        }
    },

            validateSSN: function (ssn) {
            // 
            if (!/^[0-9]{9}$/)
                return false; 
                    else 
                    { 
                       return true;
                    }

    },

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

2 个答案:

答案 0 :(得分:0)

我认为你需要 -

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

而不是 -

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

这应该告诉您ssn值是否与您的RegEx相匹配。我认为!/^[0-9]{9}$/总是会返回false。

答案 1 :(得分:0)

!/ ^ [0-9] {9} $ /将始终返回false,因为/.../部分计算为正则表达式对象,并且对象始终计算为true。

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

编辑:更简单:

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