2013-12-17 71 views
2

我正在做一個表單驗證,並且我希望所有空的輸入添加類「錯誤」,現在我一次只有一個。所有空輸入添加類

jQuery的

$(".text-input").blur(function() { 
    if ($(this).val() == '') { 
     $(this).addClass('error'); 
    } 
}); 

JSFIDDLE

回答

3

您可能還需要恢復非錯誤和檢查空格: demo

var inp = $('.text-input');      // Cache your selectors 

inp.blur(function() {       // On blur... 
    inp.removeClass('error').filter(function(){ // Remove error classes. Filter 
     return !$.trim(this.value);    // to return el. without value 
    }).addClass('error');      // and assign error class. 
}); 

另一種方式來做到這一點:demo

var inp = $('.text-input'); 

function err(){ 
    $.each(inp, function(){ 
    $(this).toggleClass('error', !$.trim(this.value)); 
}); 
} 

inp.blur(err); 

採用了經典的ifdemo

var inp = $('.text-input'); 

function err(){ 
    $.each(inp, function(){ 
    if(!$.trim(this.value)){ 
     $(this).addClass('error'); 
     // more stuff 
    }else{ 
     $(this).removeClass('error'); 
     // more stuff 
    } 
}); 
} 

inp.blur(err); 
+0

完美的人,只是,如果我想要把這個「假設」將是什麼樣的? 謝謝。 –

+0

當只有一個輸入框更改其值時,爲什麼要刪除所有輸入框的類? –

+1

@ RokoC.Buljan orly,你見過我的答案如何解決它嗎? :) –

1

將錯誤類也應在開始發生的決定;要做到這一點,您可以編寫一個小函數,該函數將在開始時或發生模糊事件時運行。

此外,您可以使用.toggleClass()來簡化添加或刪除錯誤類的邏輯。

function updateInputClass() 
{ 
    $(this).toggleClass('error', $.trim(this.value) == ''); 
} 

$(".text-input") 
    .blur(updateInputClass) 
    .each(updateInputClass) 

Demo

+0

+1爲您的設計技巧'_°g°_' < - teddy正在看你;) –

+0

@ RokoC.Buljan哈哈,非常感謝爵士:) –