功能没有获得验证的第二部分

时间:2014-09-26 16:44:42

标签: javascript jquery forms validation

我正在进行表单验证,我设置了一组逻辑结构和一组验证函数。一切都在努力达到最后一组逻辑结构,它必须验证社会安全号码。

    var errors = 0;         
    e.preventDefault();

    if(checkIsNull($('#firstname').val())){
        errors++;
        $("#firstname").closest('.input-group').addClass('has-error');
    }else{
        $("#firstname").closest('.input-group').removeClass('has-error');
    }

    if(checkIsNull($('#lastname').val())){
        errors++;
        $("#lastname").closest('.input-group').addClass('has-error');
    }else{
        $("#lastname").closest('.input-group').removeClass('has-error');
    }


    var phone = ['phone_area', 'phone_exch', 'phone_num'];

    for(var i = 0; i < phone.length; i++){
        if(checkIsNull($('#'+phone[i]+'').val()) || onlyNumbers($('#'+phone[i]+'').val())){
            errors++;
            $('#'+phone[i]+'').closest('.input-group').addClass('has-error');
        }else{
            $('#'+phone[i]+'').closest('.input-group').removeClass('has-error');
        }
    }

    if(checkIsNull($('#email').val()) || !validateEmail($('#email').val())){
        errors++;
        $("#email").closest('.input-group').addClass('has-error');
    }else{
        $("#email").closest('.input-group').removeClass('has-error');
    }

    var dob = ['birth_month', 'birth_day', 'birth_year'];

    for(var i = 0; i < dob.length; i++){
        if(checkIsNull($('#'+dob[i]+'').val()) || onlyNumbers($('#'+dob[i]+'').val())){
            errors++;
            $('#'+dob[i]+'').closest('.input-group').addClass('has-error');
        }else{
            $('#'+dob[i]+'').closest('.input-group').removeClass('has-error');
        }
    }

    var ssn = ['ssn_group', 'ssn_id', 'ssn_number'];

    for(var i = 0; i < ssn.length; i++){
        if(checkIsNull($('#'+ssn[i]+'').val()) || onlyNumbers($('#'+ssn[i]+'').val())){
            errors++;
            $('#'+ssn[i]+'').closest('.input-group').addClass('has-error');
        }else{
            $('#'+ssn[i]+'').closest('.input-group').removeClass('has-error');
        }
    }

以下是验证功能

//check if an input field is null
function checkIsNull(s){
    if(s == ''){
        return true;
    }else{
        return false;
    }
}

//check if a phone number entered is valid
function validatePhoneNumber(s){
    var str = s;
    str = str.replace(/[^0-9]/g, '');
    if(str.length != 10 || str == ""){
        return false;
    }
    else{
        return true;
    }
}

//check if something only has numbers in it
function onlyNumbers(num){
    var res = /\D+/g.test(num);
    return res;
}

function validateEmail(s){
    var str = s;
    var res = str.match(/[!#$%&'*+-\/=?^_`{|}~a-zA-Z0-9.]*@\w+\.\w+/g);
    if(res){
        return true;
    }else{
        return false;
    }
}

电话号码和社会安全号码以完全相同的方式验证,但是当我输入带有社会安全号码的信件时,它不会在输入字段中提取字母。

对此有任何想法,或者有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:1)

仅限函数Number实际上正在使用&#39; \ D&#39;不是&#39; \ d&#39;,&#39; \ D&#39;意味着你想象的所有非数字非数字。

答案 1 :(得分:0)

我解决了自己的问题。发生的事情是,当检查电话号码,出生日期和ssn的循环被迭代时,如果最后一项检出,则将删除has-error类。因此,当发现错误以保持显示正确时,我必须在这些循环中添加中断。