簡體   English   中英

必須至少完成兩個字段之一的驗證

[英]At least one of two fields must be completed validation

首先,我沒有使用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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM