[英]Check if at least one checkbox is checked using jQuery
我有五個復選框。 使用 jQuery,如何檢查是否至少檢查了其中之一?
<input type="checkbox" name="service[]">
<br />
<input type="checkbox" name="service[]">
<br />
<input type="checkbox" name="service[]">
<br />
<input type="checkbox" name="service[]">
<br />
<input type="checkbox" name="service[]">
is()
可以做到這一點,並且可以說is(":checked")
唯一可以接受的用法:
從 jQuery 文檔, http : //api.jquery.com/is/ :
根據選擇器、元素或 jQuery 對象檢查當前匹配的一組元素,如果這些元素中至少有一個與給定的參數匹配,則返回 true。
alert($("input[name='service[]']").is(":checked"));
示例: http : //jsfiddle.net/AndyE/bytVX/1/ (基於Brandon Gano的小提琴)
或者,可能更快,您可以將函數傳遞給is()
:
$("input[name='service[]']").is(function () {
return this.checked;
});
編輯:此答案中的原始解決方案效率低下,不應使用。 請參閱基於對此問題的其他答案的評論和示例的修訂解決方案。
原始(壞)解決方案如下:
// DO NOT USE; SEE BELOW
$('button').click(function () {
var atLeastOneIsChecked = false;
$('input:checkbox').each(function () {
if ($(this).is(':checked')) {
atLeastOneIsChecked = true;
// Stop .each from processing any more items
return false;
}
});
// Do something with atLeastOneIsChecked
});
在這個例子中 .each() 的使用是多余的,因為 .is() 可以直接在一組對象上使用,而不是手動迭代每個對象。 一個更有效的解決方案如下:
$('button').click(function () {
var atLeastOneIsChecked = $('input:checkbox').is(':checked');
// Do something with atLeastOneIsChecked
});
請注意,其中一條評論表明非常不喜歡$(this).is(':checked')
。 澄清is(':checked')
,在您測試一組對象的情況下, is(':checked')
沒有任何問題。 也就是說,在單個項目上調用is(':checked')
比在同一項目上調用.checked
效率低得多。 它還涉及對 $ 函數的不必要調用。
這應該可以解決問題:
function isOneChecked() {
return ($('[name="service[]"]:checked').length > 0);
}
另一個答案:
!!$("[type=checkbox]:checked").length
要么
!!$("[name=service[]]:checked").length
這取決於你想要什么。
你應該像這樣嘗試......
var checkboxes = $("input[type='checkbox']"),
submitButt = $("input[type='submit']");
checkboxes.click(function() {
submitButt.attr("disabled", !checkboxes.is(":checked"));
});
您需要檢查復選框是否被選中。
$("#select_all").click(function(){
var checkboxes = $("input[type='checkbox']");
if(checkboxes.is(":checked"))
alert("checked");
else
alert("select at least one;
});
var checkboxes = document.getElementsByName("service[]");
if ([].some.call(checkboxes, function () { return this.checked; })) {
// code
}
您想要的很簡單,獲取所有具有名稱的元素,然后在檢查其中一些元素時運行一些代碼。
不需要 jQuery。
不過,對於舊版瀏覽器,您可能需要 ES5 墊片
您可以通過以下方式進行。 最初設置一個變量,假設checked
為false
。 如果滿足以下條件,則將其設置為true
。 使用if
語句檢查變量。 注意:這里submit
是id
按鈕, main
是形式的ID。
$("#submit").click(function() { var checked = false; if (jQuery('#main input[type=checkbox]:checked').length) { checked = true; } if (!checked) { //Do something } });
方括號[]
不是必需的:
var atLeastOneIsChecked = $("input[name='service']:checked").length > 0;
您的 HTML 也是如此,但最好有一個id
來唯一標識每個復選框:
<input id="chk1" type="checkbox" name="service">
<br />
<input id="chk2" type="checkbox" name="service">
<br />
<input id="chk3" type="checkbox" name="service">
<br />
<input id="chk4" type="checkbox" name="service">
<br />
<input id="chk5" type="checkbox" name="service">
var atLeastOneIsChecked = $('input[name="service[]"]:checked').length > 0;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.