在javascript中嵌套if else函数

时间:2015-09-08 04:58:49

标签: javascript

我正在尝试为项目选择webapp页面添加条形码验证功能,我有这样的javascript:

 function barcodeSubmit () {

 if (barcode1 != barcode || barcode2 != barcode) {
   if (PUT_LPN == "") {
  barcodeF.focus();
  return false;
  }  
 } else {
 if (barcode1 != barcode || barcode2 != barcode) {
 if (PUT_LPN != "") {
     barcodeF.focus();
     return false;
     }  
   }
 }
} else {
 if (barcode1 == barcode || barcode2 == barcode) {
 if (PUT_LPN == "") {
    PUT_LPN.focus();
    return false;
  }  
 }
}
 else {
  if (barcode1 == barcode || barcode2 == barcode) {
  if (PUT_LPN != "") {
    return true;
   }  
  }
 }
}

当我提交此表单时,它不提交,我无法让它执行连接到onclick输入字段的功能。当我简化它会执行我想要的时候它会调用它。我也尝试了没有else语句,结果略有不同,但仍未正确触发事件

4 个答案:

答案 0 :(得分:1)

您使用一个if和4 else时遇到很多问题的代码以及一些未使用的条件也会尝试以下内容:

function barcodeSubmit() {

    if (barcode1 != barcode || barcode2 != barcode) {
        if (PUT_LPN == "") {
            barcodeF.focus();
            return false;
        } else if (PUT_LPN != "") {
            barcodeF.focus();
            return false;
        }
    }
    else if (barcode1 == barcode || barcode2 == barcode) {
        if (PUT_LPN == "") {
            PUT_LPN.focus();
            return false;
        } else if (PUT_LPN != "") {
            return true;
        }
    }
}

答案 1 :(得分:1)

改用开关:

switch(true) {
    case ((barcode1 != barcode || barcode2 != barcode) && PUT_LPN == ""):
        barcodeF.focus();
        return false;
    case ((barcode1 != barcode || barcode2 != barcode) && PUT_LPN != ""):
        barcodeF.focus();
        return false;
    case ((barcode1 == barcode || barcode2 == barcode) && PUT_LPN == ""):
        PUT_LPN.focus();
        return false;
    case ((barcode1 == barcode || barcode2 == barcode) && PUT_LPN != ""):
        return true;
    default:
        return true;
}

如果不需要,您可以删除默认案例

答案 2 :(得分:1)

请尝试以下内容

function barcodeSubmit () {

 if (barcode1 != barcode || barcode2 != barcode) {
	if (PUT_LPN == "") {
	  barcodeF.focus();
	  return false;
	}  
 } else if (barcode1 != barcode || barcode2 != barcode) {
	if (PUT_LPN != "") {
	  barcodeF.focus();
      return false;
    }   
} else if (barcode1 == barcode || barcode2 == barcode) {
	if (PUT_LPN == "") {
		PUT_LPN.focus();
		return false;
	}  
}else {
	if (barcode1 == barcode || barcode2 == barcode) {
		if (PUT_LPN != "") {
			return true;
		}  
	}
}

}

答案 3 :(得分:1)

我觉得问题是PUT_LPN.focus()PUT_LPN == ""。我假设它和输入字段,为了比较它的值,你需要使用PUT_LPN.value。同样,if...else的语法也无效。

if(condition) {
  //
} else if(condition) {
  //
} else {
  //
}

还有很多重复的条件你需要照顾。

function barcodeSubmit() {
  if (barcode1 === barcode || barcode2 === barcode) {
    var flag = ('' === PUT_LPN.value);
    if (flag)
      PUT_LPN.focus();
    return !flag;
  }
  barcodeF.focus();
  return false;
}