0

所以我只是想定义输入字段的值何时为空或空。使用 jQuery 的.val()函数会很简单。将其与反向验证相结合,您将得到:

if($('input').val() != '' || $('input').val() != null)
{
   //any code
}

然而,由于某种原因,这并没有像往常那样发挥作用。相反,我不得不使用这个:

if(!$('input').val() == '' || !$('input').val() == null)
{
   //any code
}

所以我想知道:这两者之间有什么区别?为什么第一个代码与第二个代码不一样?

第一个代码的jsFiddle,第二个代码的
jsFiddle

更新:

添加了一个选择框。

4

1 回答 1

2

首先,val()不能同时为空字符串null。这就是为什么总是if($('input').val() != '' || $('input').val() != null)会返回的原因。true

&&在这种情况下你需要。

第二个例子更有趣。由于 JS 不是强类型语言,因此!$('input').val() == ''尝试!$('input').val()与空字符串进行比较,即它强制转换$('input').val()bool,取反,得到false结果并将该值与空字符串进行比较。

最好的部分:false == ''等于... true!隐式类型转换做得很好。

你能做什么?

  1. 在第一个示例中,只需更改||&&

    if ($('input').val() != '' && $('input').val() != null)
    
  2. 在第二个中,您应该修复操作顺序:

    if (!($('input').val() == '') && !($('input').val() == null))
    

    或更好

    if (!($('input').val() == '' || $('input').val() == null))
    
于 2013-11-01T09:15:26.107 回答