我正在进行表单验证,我设置了一组逻辑结构和一组验证函数。一切都在努力达到最后一组逻辑结构,它必须验证社会安全号码。
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;
}
}
电话号码和社会安全号码以完全相同的方式验证,但是当我输入带有社会安全号码的信件时,它不会在输入字段中提取字母。
对此有任何想法,或者有人能指出我正确的方向吗?
答案 0 :(得分:1)
仅限函数Number实际上正在使用&#39; \ D&#39;不是&#39; \ d&#39;,&#39; \ D&#39;意味着你想象的所有非数字非数字。
答案 1 :(得分:0)
我解决了自己的问题。发生的事情是,当检查电话号码,出生日期和ssn的循环被迭代时,如果最后一项检出,则将删除has-error类。因此,当发现错误以保持显示正确时,我必须在这些循环中添加中断。