2013-11-01 121 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