检查表单中的值(Javascript)

时间:2017-08-22 18:33:18

标签: javascript

我在表单中有五个变量,为简单起见,我将它们命名为A,B,C,D和E. 为了提交表格(A或(B或C))和(D或E)必须有一个值(我希望它是明确的:P)。 我试过

if ((A == "" || (B == "" || C == "")) && (D == "" || E == "")) {
    alert ("Error!");
} else {
    form.submit();
}

但它并不适用于所有情况。例如,如果A,B和C具有值,即使D或E都没有值,也会提交表单。 谢谢你的帮助!

4 个答案:

答案 0 :(得分:2)

如果您拥有所有字符串,则可以反转条件并使用逻辑AND和一个OR检查所有字符串。

var a = '', b = '', c = '', d = '', e = '';
    
if (a && b && c || d && e) {
    console.log('form.submit();');
} else {
    console.log('Error!');
}

  

为什么会这样:

     

给定的

(A == "" || (B == "" || C == "")) && (D == "" || E == "")
     

简化A == ""相当于!A

(A == "" || B == "" || C == "") && (D == "" || E == "")

(!A || !B || !C) && (!D || !E)
     

De Morgan's laws !(a && b) = !a || !b!(a || b) = !a && !b

 (!A || !B || !C) && (!D || !E)

 !(A &&  B &&  C) && !(D &&  E)

!((A &&  B &&  C) ||  (D &&  E))
     

运算符优先级

!(A && B && C || D && E)
     

现在切换/否定然后< - >其他

A && B && C || D && E

答案 1 :(得分:1)

您需要将逻辑更改为:

if ((A != "" || (B != "" || C != ""))
    && (D != "" || E != "")) {
        form.submit();
} else {
       alert ("Error!");
}

另一种方法是这样做:

if ((A == "" && (B == "" && C == ""))
    || (D == "" && E == "")) {
        alert ("Error!");
} else {
      form.submit();
}

编辑:第一个代码段可以重构为以下内容:

if ((A || (B || C )) && (D || E )) {
        form.submit();
} else {
       alert ("Error!");
}

使用NOT运算符!的第二个代码段也可以这样做。

答案 2 :(得分:1)

if (A == "" || B == "" || C == "" && (D == "" || E == "")) {
        alert ("Error!");
} else {
       form.submit();
}

答案 3 :(得分:0)

我稍微更新了代码。我认为这对你有用。

function isNonEmpty(string) {
  //returning the string's truthiness value
  return string.trim() ? true : false;
}

//change these values around to make sure the logic is correct
var A = "cat",
  B = "    ",
  C = "dog",
  D = "",
  E = " turtle";

//almost exactly what you have just calling a function for neatness
if ((isNonEmpty(A) || isNonEmpty(B) || isNonEmpty(C)) &&
  (isNonEmpty(D) || isNonEmpty(E))) {
  console.log("Valid form. Time to submit!");
} else {
  console.log("Invalid form. Please check your values!");
}