当我运行此代码时,它似乎没有按照我的预期行事。所以这是一个验证,当我运行if语句时,验证器在遇到false时停止运行。但是当它从另一个函数numCheck中击中false时,它会发出警报,然后继续。由于下面有更多的验证,如果numCheck恢复干净,我如何继续完成剩余的验证,而不是删除它是否正确?我哪里错了?
function numCheck(num){
if(isNaN(num)){
alert("Vendor number must be numeric");
focusTo(document.forms["parts"]["vendorNo"]);
return false;
}
}
function validateForm(){
//DECLARATION
var vendorNo = document.forms["parts"]["vendorNo"].value;
//VENDOR NUMBER
numCheck(vendorNo);
if(vendorNo.length != 4){
alert("Please enter 4 digit Vendor Number");
focusTo(document.forms["parts"]["vendorNo"]);
return false;
}

提前谢谢你,我花了很多时间试图解决这个问题。
答案 0 :(得分:1)
您还必须从父(调用)函数validateForm
返回您的子程序numCheck将返回调用函数validateForm
function numCheck(num){
if(isNaN(num)){
alert("Vendor number must be numeric");
focusTo(document.forms["parts"]["vendorNo"]);
return false;
}
return true;
}
function validateForm(){
//DECLARATION
var vendorNo = document.forms["parts"]["vendorNo"].value;
//VENDOR NUMBER
if (numCheck(vendorNo)==false){
console.log("Invalid vendorNumber");
return; // you must also return from the calling function, otherwise the code will still continue.
}
if(vendorNo.length != 4){
alert("Please enter 4 digit Vendor Number");
focusTo(document.forms["parts"]["vendorNo"]);
return false;
}

答案 1 :(得分:1)
从numCheck
返回并不意味着validateForm
已经返回任何内容。检查numCheck
的返回值,然后执行相应的操作。
function validateForm(){
...
// numCheck returns a boolean here. If it returns false, return from this function
if(!numCheck(vendorNo)) {
return false;
}
....