2014-02-14 44 views
0

我無法弄清楚我在這裏做錯了什麼。我有一個函數,查找特定div中的所有輸入和選擇框。它成功找到這些元素,並在輸入爲空時添加一個錯誤標籤。但出於某種原因,如果我在第一個輸入中輸入一個值,那麼它將不會單獨驗證其他輸入。理想情況下,我希望它能夠單獨驗證輸入,看起來像是將它們驗證爲一個組。有任何想法嗎?我通過代碼示例學到了最好的東西,請在適用的地方加入。jQuery - 查找並驗證div中的一組輸入框

function validateInput(event) { 
     var $target = $(event.target); 
     var validateInfo = $target.closest('#column').find('input, select'); 

     validateInfo.val() == '' ? validateInfo.prev('label').addClass('error') : validateInfo.prev('label').removeClass('error'); 
     return false; 
    } 

    return this.each(function() { 

     var $headerForm = $(this); 
     headerForm.on('click, '.header a', validateInput); 

    } 
+0

你所說的「單獨將不會驗證其他輸入」呢?你的js有點脫離上下文,'this.each'返回了什麼?您將一組元素分配給'validateInfo',但將其視爲單個元素:'validateInfo.val()==''' – helion3

+0

我有一組輸入,當它通過我的函數運行時,它向所有人添加錯誤標籤領域。但是,如果我在其中一個字段中輸入值,則其他任何字段都不會生效。 –

+0

但是'.find('input,select')'會返回多個元素,所以你需要迭代這個列表,但你只需要調用'validateInfo.val()'。 – helion3

回答

1

當你有像.find('input, select')它會匹配多個元素,這意味着你需要遍歷他們:

$('form').find('input, select').each(function(){ 
    if($(this).val() === ""){ 
    // add to error messages, set error classes, etc 
    } 
}); 
+0

太棒了!非常感謝你@ helion3 –