簡體   English   中英

檢查是否至少使用 jQuery 選中了一個復選框

[英]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 墊片

您可以通過以下方式進行。 最初設置一個變量,假設checkedfalse 如果滿足以下條件,則將其設置為true 使用if語句檢查變量。 注意:這里submitid按鈕, 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM