两个字段中至少有一个必须完成验证

At least one of two fields must be completed validation

本文关键字:有一个 验证 两个 字段      更新时间:2023-09-26

首先,我是不是使用jquery验证插件。

我在JavaScript中有以下验证:

var m = mob.substr(0,2);
var l = land.substr(0,2);
if (mob == '' && land == '') {
    alert("You must enter at least one phone number");
    return false;
}
else if (mob.length != 10 || m != "04") {
    alert("Mobile number is invalid. Must be a valid australian mobile number.");
    return false;
}
else if (land.length != 10 || l == "04" || l == "01" || l == "05" || l == "06" || l == "09" || l == "00") {
    alert("Landline is invalid. Must be a valid australian landline number.");
    return false;
}

正如标题所示,我希望用户能够只输入一个或两个字段,而不是将两个字段都留空。

如何将其合并到验证中?

var m = mob.substr(0,2);
var l = land.substr(0,2);
if (mob === '' && land === '') {
    alert("You must enter at least one phone number");
    return false;
}
if (mob !== '' && (mob.length !== 10 || m !== "04")) {
    alert("Mobile number is invalid. Must be a valid australian mobile number.");
    return false;
}
if (land !== '' && (land.length !== 10 || l === "04" || l === "01" || l === "05" || l === "06" || l === "09" || l === "00")) {
    alert("Landline is invalid. Must be a valid australian landline number.");
    return false;
}
return true;

这里只是在最后两个条件的基础上再添加一个条件。把它们写成独立的if语句。所以它们都会被求值。

只是一个想法…

function validate () {
    var sMobile = ...;
    var sLand   = ...;
    var lines = parsePhoneLines(sMobile, sLand);
    if (lines.errors) {
        for (var i = 0, length = lines.errors.length; i < length; i++) {
            alert (lines.errors[i]);
        }
        return false;
    } else {
        return true;
    }
}
function parsePhoneLines (sMobile, sLand) {
    var mobile = parseMobile(sMobile),
        land   = parseLand(sLand);
    if (mobile.errors && land.errors) {
        return {
            errors: mobile.errors.concat(land.errors)
        };
    } else {
        return {
            land:   land.value,
            mobile: mobile.value
        };
    }
}
function parseMobile (s) {
    var errors = getErrorsForMobile(s);
    if (errors.length === 0) {
        return { value: s };
    } else {
        return { errors: errors };
    }
}
function parseLand (s) {
    var errors = getErrorsForLand(s);
    if (errors.length === 0) {
        return { value: s };
    } else {
        return { errors: errors };
    }
}

试试这个:

var m = mob.substr(0,2);
var l = land.substr(0,2);
if (mob == '' && land == '') {
    alert("You must enter at least one phone number");
    return false;
} else {
    if (mob != '') {
    if (mob.length != 10 || m != "04") {
        alert("Mobile number is invalid. Must be a valid australian mobile number.");
        return false;
    }
    } else {
    if (land.length != 10 || l == "04" || l == "01" || l == "05" || l == "06" || l == "09" || l == "00") {
        alert("Landline is invalid. Must be a valid australian landline number.");
        return false;
    }
    }
}
return true;

只需要给第一个if加上else子句

var m = mob.substr(0,2);
var l = land.substr(0,2);
var flag=1;
if (mob == '' && land == '') {
    alert("You must enter at least one phone number");
    return false;
}
else if (mob.length != 10 || m != "04") {
    if(land.length>0)
     {
      //landline have value don not alert this
     }
     else
     {
        alert("Mobile number is invalid. Must be a valid australian mobile number.");
        flag=0;//means invalid
     }
}
else if (land.length != 10 || l == "04" || l == "01" || l == "05" || l == "06" || l == "09" || l == "00") {
    if(flag==1)
    {
        return true;// means mobile have value
    }
    alert("Landline is invalid. Must be a valid australian landline number.");
    return false;
}
相关文章: