2014-11-01 89 views
-2

我想寫一個非常簡單的表單驗證,這裏是我有什麼工作的示例代碼段:如何添加規則到這個簡單的驗證? - jQuery的

if($('input[name=name]').val() == ""){ 
    e.preventDefault(); 
    alert('prevented') 
} 

隨着它工作的聲明,如果一個規則。我想什麼做的,是在添加一些新的規則if語句如:

input[name=email] 
input[name=company] 

但是這樣的事情不工作:

if($('input[name=name]').val() && $('input[name=email]').val() && $('input[name=company]').val() == "") 

有沒有一種方法來添加這些那裏有三條規則?它似乎不適用於只有& &?

感謝您的幫助!

+0

請詳細說明你的前兩條規則。 – 2014-11-01 02:40:54

回答

1

&&單獨表達。在您的例子中,三個表達式是:在這種情況下,前兩個都只是價值

  1. $('input[name=name]').val()
  2. $('input[name=email]').val()
  3. $('input[name=company]').val() == ""

通知。最後是使用類型cohersion。如果你試圖避免類型cohersion(因爲你問這個問題擺在首位,這是最有可能如此),那麼你就需要提供完整的表述:

  1. $('input[name=name]').val() === ''
  2. $('input[name=email]').val() === ''
  3. $('input[name=company]').val() === ''

在if語句把這些:

if ($('input[name=name]').val() === '' && 
    $('input[name=email]').val() === '' && 
    $('input[name=company]').val() === '') { 
    ... 
} 

或者在可讀性方面:

var isNotEmpty = function(inputName) { 
    var selector = 'input[name=' + inputName + ']'; 
    return $(selector).val() !== ''; 
} 

var isValid = ['name', 'email', 'company'].every(isNotEmpty); 

if (!isValid) { 
    ... 
} 
0

&&優先於==。這意味着您的表達式被評估爲3個不同的表達式,都需要滿足。它們是: $('input[name=name]').val(),$('input[name=email]').val()$('input[name=company]').val() == ""

可能是你想要的東西是所有3個值等於在這種情況下,你需要做的是這樣""

if($('input[name=name]').val() == "" && 
    $('input[name=email]').val() == "" && 
    $('input[name=company]').val() == "") 
0

,需要在每個值單獨進行比較,不是通過&&

if($('input[name=name]').val() == "" && 
    $('input[name=email]').val() == "" && 
    $('input[name=company]').val() == "") 

相結合的結果,是對懶惰的日子,我希望其他的方式將工作和誠實。但幸好這不是邏輯的作用。