与一个AND一起使用多个OR

时间:2018-08-08 17:14:07

标签: javascript jquery

我想对一个AND运算符使用多个OR,但是在此示例中,即使我填写了#ads-estate-age,我也会遇到错误。

$('a').click(function() {
  if ($('#ads-subsubcategory').val() == 92 || $('#ads-subsubcategory').val() == 103 || $('#ads-subsubcategory').val() == 97 || $('#ads-subsubcategory').val() == 100 && $('#ads-estate-age').val().length <= 0) {
    alert('its empty');
  } else {
    alert('ok');
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="ads-subsubcategory" value="92" />
<input type="text" id="ads-estate-age" />

<a>check</a>

我尝试添加括号,但仍然无法正常工作:

$('a').click(function() {
  if (($('#ads-subsubcategory').val() == 92) || ($('#ads-subsubcategory').val() == 103) || ($('#ads-subsubcategory').val() == 97) || ($('#ads-subsubcategory').val() == 100) && $('#ads-estate-age').val().length <= 0) {
    alert('its empty');
  } else {
    alert('ok');
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="ads-subsubcategory" value="92" />
<input type="text" id="ads-estate-age" />

<a>check</a>

我错过了什么?

2 个答案:

答案 0 :(得分:4)

在没有括号的情况下混合OR和AND总是会产生奇怪的结果。

在您的情况下,您需要在OR块周围添加括号,如下所示:

if ((optional || optional2 || optional3) && required) {
    //...
}

但是,事实证明,您的条件可以重写-并且在此过程中大大简化了操作以避免重复-因此不需要括号。

let
subcat = $('#ads-subsubcategory').val(),
age = $('#ads-estate-age').val();
if ([92, 103, 97, 100].includes(subcat) && age.length === 0) {
    //...
}

注意=== 0,而不是<= 0;字符串在逻辑上不能小于零。

答案 1 :(得分:0)

1。(ads-subsubcategory = 92 || 103 || 97 || 100 && ads-estate-age.length <= 0)为错误条件。

2.(ads-subsubcategory = true ||假)如果所有一个条件都为真,且所有条件为假,则条件为假。始终为真。

3.(ads-estate-age.length <= 0)是或否。

4(ads-subsubcategory = true && ads-estate-age.length = false)然后为false。

5.(ads-subsubcategory = false && ads-estate-age.length = false)然后为false。

6.(ads-subsubcategory = true && ads-estate-age.length = true)然后为true。

$(document).ready(function()
{
$('button').click(function() {
if (($('#ads-subsubcategory').val() == 92) || ($('#ads-subsubcategory').val() == 103) ||($('#ads-subsubcategory').val() == 97) || ($('#ads-subsubcategory').val() == 100) && $('#ads-estate-age').val().length <= 0) 
{
alert('its empty');
} else {
alert('ok');
}
});
});

<input type="text" id="ads-subsubcategory" value="92" />
<input type="text" id="ads-estate-age" />
<button>check</button>