javascript - 函数未获取验证的第二部分

标签 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;
    }
}

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

对此有什么想法,或者有人可以指出我正确的方向吗?

最佳答案

函数onlyNumbers实际上使用'\D'而不是'\d','\D'表示所有非数字而不是你想象的数字。

关于javascript - 函数未获取验证的第二部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26064414/

相关文章:

javascript - phantomjs + jquery : returns empty string

javascript - 我可以在我的列表编号中添加文本吗

javascript - 如何重置 "clear search"上的下拉值

javascript - Electron - 获取表单数据

javascript - 有没有一种实用的方法可以在 Production 中添加 Webpack 生成的样式表

javascript - 如何在执行另一个函数之前检查一个函数

javascript - $.when申请单一请求

jQuery Spy(垂直滚动条): after 4th iteration, 列表项动画向下,增加容器的高度

javascript - 购物车中出现重复的商品

php - 更新 MySQL 文本字段行时生成不需要的反斜杠