Javascript函数,调用另一个函数,但返回false不会停止

时间:2017-04-03 21:09:31

标签: javascript function

当我运行此代码时,它似乎没有按照我的预期行事。所以这是一个验证,当我运行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;
	}




提前谢谢你,我花了很多时间试图解决这个问题。

2 个答案:

答案 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;
  }
 ....