2013-11-01 122 views
0

所以我只是试图做一个输入字段的值为空或空时定义。这对于jQuery的.val()函数来说很简单。结合反向验证,你会得到这个:反向验证jQuery空输入字段

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

然而,由于某种原因,这并没有像往常一样做的伎俩。 相反,我不得不用这样的:

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

所以我不知道:excatly这两个之间的区别是什么?为什么第一个代码和第二个代码不一样?

jsFiddle第一码
jsFiddle第二代码

更新的

添加了选择框。

回答

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)) 
    
+0

现在我还有1个问题:你说:“val()不能是空字符串**和** null在同一时间”。我知道,这就是为什么我使用OR('||')运算符而不是AND('&&')运算符。 – nkmol

+0

@nkmol,让我们看看:1)'''!=''|| ''!= null' - >'false || true' - >'true'; 2)'null!=''|| null!= null' - >'true || false' - >'true' – Smileek

+0

@nkmol,终于找到它了:http://en.wikipedia.org/wiki/De_Morgan%27s_laws – Smileek