我在表单中有五个变量,为简单起见,我将它们命名为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都没有值,也会提交表单。 谢谢你的帮助!
答案 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!");
}