2012-01-18 69 views
23

我有3個divs,每個輸入域和下一個按鈕都有。 我想編寫一個jQuery代碼片段,當單擊下一個按鈕時,它將檢查以確保與按鈕相同的div內的所有輸入字段都不爲null。檢查所有輸入字段已填寫與jQuery

我已經試過,沒有運氣但是我100%肯定它的錯,只是我不能在網上找到相關信息如下...

http://jsfiddle.net/xG2KS/1/

回答

52

你可以使用filter減少該組中的所有元素input只有那些空的,並檢查剩下的length屬性:

$(".next").click(function() { 
    var empty = $(this).parent().find("input").filter(function() { 
     return this.value === ""; 
    }); 
    if(empty.length) { 
     //At least one input is empty 
    } 
}); 

請注意,上面代碼中的空白定義是一個空字符串。如果您想將空白處理爲空,則可能需要在比較之前修剪該值。

另請注意,不需要將this傳遞給filter函數中的jQuery。 DOM元素本身具有value屬性,訪問該元素要快得多,而不是使用val

這是updated fiddle

+1

啊,精彩,謝謝! – Liam 2012-01-18 09:41:25

+0

沒問題,很高興我可以幫助:) – 2012-01-18 09:48:54

+0

如何使用這個與輸入文本和選擇的形式? – 2017-05-03 21:31:58

6
$('.next').click(function() { 
    var emptyInputs = $(this).parent().find('input[type="text"]').filter(function() { return $(this).val() == ""; }); 
    if (emptyInputs.length) { 
     alert('Fail!'); 
    } 
}); 
+0

Thanks @garvey!,有沒有辦法說,如果任何輸入是空的,拋出一個警告,因爲oppposed循環? – Liam 2012-01-18 09:35:25

+0

是的,看我的編輯。沒有循環。 – pltvs 2012-01-18 09:42:52

+0

我怎麼包括選擇? – 2017-05-03 21:36:43

0
$('.next').click(function() { 
    var inputs = $(this).parent().find('input[value=""]'); 
    if (!inputs.length) { 
     // you have empty fields if this section is reached 
    } 
}); 
+0

這將表示即使沒有空輸入也會有空輸入,因爲它會查看'value' *屬性*而不是屬性。 – 2012-01-18 09:44:05

+0

我不遵循?由於我對jQuery的理解不夠深入,你會介意解釋嗎? – 2012-01-18 09:47:33

+3

您已使用屬性選擇器來查找「value」屬性等於空字符串的元素。 'value' *屬性*是在元素本身定義的:''。由於沒有一個'input'元素具有'value'屬性,所以你的代碼總是會說它們都是空的。 – 2012-01-18 09:50:52