2016-11-07 76 views
1

我有一個通過ajax加載的表單。根據發送到獲取表單的參數,表單可能沒有複選框,或者它可能有一個或多個複選框。jQuery檢查複選框是否在頁面上

我想檢查頁面上是否存在複選框,如果是,提示用戶在驗證期間選擇一個,如果沒有選擇。

如果存在,複選框具有相同的類別和不同的ID。

<input type="checkbox" name="associatedClass" 
value="$associatedClsNumVal" class="getAssociatedClass" 
id="$associatedClsNumVal" /> 

什麼是最佳方法?如果在頁面上/表單中有複選框,jquery可以「感覺」嗎?

謝謝。


感謝您對我以前的帖子提供的幫助。因爲它是同一類型的問題,所以我加入了這個。

我現在有一個頁面,有一個或多個複選框組,我需要確保每個組中只有一個複選框被選中。

因爲我不知道在加載頁面之前有多少組,所以檢查這個最好的方法是什麼?

謝謝!

+1

好了,如果有複選框,然後'$( '輸入[類型=複選框]')'將有一個積極的長度。 – David

+1

同上'$('input [name =「associatedClass」]')''和$(「。getAssociatedClass」)' – mplungjan

回答

3

最簡單的方法是檢查頁面上的類型複選框是否有任何輸入。使用jQuery,您可以使用CSS選擇器(例如input[type="checkbox"])查找DOM中的元素。把它和.length結合起來,你就可以得到頁面上有多少。這個完整的jQuery代碼將

if ($('input[type="checkbox"]').length) { 
    // Validate checkboxes 
} 

如果有可能是因爲你不想驗證,那麼你可以將搜索限制到特定的元素頁面上的其他複選框。例如,如果您只想驗證ID爲myForm的特定表單中的複選框,則可以選擇表單並使用.find()來搜索該表單內的複選框。

if ($('#myForm').find('input[type="checkbox"]').length) 
{ 
    // Validate checkboxes 
} 

但是與驗證你可能要單獨等等,而不是檢查每個輸入只是檢查的長度,以確保沒有在頁面上至少一個複選框,我們可以使用.each找到所有的複選框,然後過程他們一次一個。

$('input[type="checkbox"]').each(function() { 
    // Validate this checkbox 
}); 

的是,優點是如果有沒有它不會嘗試和驗證任何東西,這是完全合法的網頁上,所以我們並不需要進行檢查,看是否有任何我們的驗證之前。

+0

我覺得這很容易。非常感謝。 – Gman

+0

@Gman很高興我能幫上忙。請不要忘記註冊並將其標記爲正確,以幫助其他人在未來尋找相同問題的解決方案。 – Styphon

2
$(':checkbox').length 

會給你一個頁面上所有複選框的計數。如果你需要更具體的話,你可以給他們一個普通的課程來縮小這個範圍。

例如,僅計算與類 'SECTION1' 的複選框:

var $checks = $('.section1:checkbox'); 
console.log('There are ' + $checks.length + ' checkboxes'); 

https://jsbin.com/bowasi/edit?html,js,console,output