2009-11-03 89 views
1

我如何:JavaScript:如何檢測HTML複選框是否被選中?

  1. 檢測HTML複選框是否被點擊/選擇?
  2. 檢索哪個複選框已被選中?

示例代碼:

<FORM ACTION="..."> 
<INPUT TYPE=CHECKBOX VALUE="1">1 bedroom<BR> 
<INPUT TYPE=CHECKBOX VALUE="2">2 bedrooms<BR> 
<INPUT TYPE=CHECKBOX VALUE="3">3 bedrooms<BR> 
<INPUT TYPE=CHECKBOX VALUE="4+">4+ bedrooms<P> 
</FORM> 

含義,

    如果web用戶選擇 「1個臥室」
  1. ,我希望有一個觸發事件,通知我選擇了 「1個寢室」 用戶。
  2. 如您所見,用戶可以選擇多個複選框。例如,他們可能希望看到擁有「一間臥室」或「兩間臥室」的房屋。所以他們會選中兩個複選框。如何在選中多個複選框時檢索複選框的值?

萬一有幫助,我將開放給使用JQuery進行簡化。

回答

0

爲您的複選框元素指定名稱和/或ID,以便您可以在代碼中區分它們。然後,使用jQuery,如果要處理檢查/取消選中狀態更改,請使用bind添加事件。

0

在您的複選框上使用ID。

<FORM ACTION="..."> 
<INPUT TYPE=CHECKBOX id="c1" VALUE="1">1 bedroom<BR> 
<INPUT TYPE=CHECKBOX id="c2" VALUE="2">2 bedrooms<BR> 
<INPUT TYPE=CHECKBOX id="c3" VALUE="3">3 bedrooms<BR> 
<INPUT TYPE=CHECKBOX id="c4" VALUE="4+">4+ bedrooms<P> 
</FORM> 



$('c1').checked // returns whether the 1 bedroom checkbox is true or false 
+0

$('c1')。checked是一個檢查,看它是否被選中。我需要一個事件才能通知我該複選框已被選中。如果複選框被選中,如何創建要觸發的事件? – HankH 2009-11-03 17:03:26

3

1)使用onclick屬性。
2)你可以給他們每個相同的名稱,並使用$('input[name=yourname]:checked')來獲得他們全部。

[編輯]根據要求,這裏是一個SSCCE

<!doctype html> 
<html> 
    <head> 
     <script src="jquery.js"></script> 
     <script> 
      $(document).ready(init); 

      function init() { 
       // Add onclick function to every checkbox with name "bedrooms". 
       $('input[name=bedrooms]').click(showCheckedValues); 
      } 

      function showCheckedValues() { 
       // Gather all values of checked checkboxes with name "bedrooms". 
       var checked = $('input[name=bedrooms]:checked').map(function() { 
        return this.value; 
       }).get(); 
       alert(checked); 
      } 
     </script> 
    </head> 
    <body> 
     <form> 
      <input type="checkbox" name="bedrooms" value="1">1 bedroom<br> 
      <input type="checkbox" name="bedrooms" value="2">2 bedroom<br> 
      <input type="checkbox" name="bedrooms" value="3">3 bedroom<br> 
      <input type="checkbox" name="bedrooms" value="4+">4+ bedroom<br> 
     </form> 
    </body> 
</html> 
+0

@BalusC,你介意通過展示一些代碼來闡述一些。我對你的迴應感到非常興奮,但我不清楚它的工作原理。 – HankH 2009-11-03 17:04:39

+0

沒問題,增加了一個SSCCE。 – BalusC 2009-11-03 17:10:55

+0

有趣的是,在第二個

0

您可以使用事件來查看是否選中了複選框(onChange)。您可以在Essential Javascript教程中閱讀更多關於它的內容(請參閱標題爲:Javascript是一種事件驅動的語言

12

jQuery來拯救! (因爲你標記它是這樣):

$('input:checkbox[name=bedrooms]').click(function() { 
    var values = $('input:checkbox[name=bedrooms]:checked').map(function() { 
    return this.value 
    }).get(); 

    // do something with values array 
}) 

(請務必在HTML爲您的複選框添加name="bedrooms"屬性;反正提交表單時,你需要他們,以檢索它們的服務器上)。

我用了幾個僞選擇:

將它們合併爲"input:checkbox[name=bedrooms]:checked"和d jQuery爲您提供所有選中的複選框。

對於每一個我pluck out their value attribute成一個數組,你可以簡單地迭代和做你想做的。

編輯

您可以優化這段代碼保存到您的複選框而不是告訴jQuery的參考去獲取它們全部每次有點擊:

var $checkboxes = $('input:checkbox[name=bedrooms]'); 
$checkboxes.click(function() { 
    var values = $checkboxes 
    .filter(function() { return this.checked }) 
    .map(function() { return this.value }) 
    .get(); 

    // do something with values array 
}) 

在此示例中,我已經將複選框保存到var $checkboxes。點擊任何複選框,而不是回到DOM來抓取已選中的複選框,我們只需簡單地將filter$checkboxes下拉到選中的複選框,並將每個pluck out the value attribute放入數組中。 get()只是將「jQueryized」數組轉換爲常規JavaScript數組的一個晦澀的要求。

+0

陷阱是它會收集文檔中的每個複選框。如果他有更多的複選框,而不是隻有臥室? – BalusC 2009-11-03 17:13:03

+0

哦,get(0)只返回地圖的第一個元素。不是原始數組。 – BalusC 2009-11-03 17:24:48

+0

@BalusC:「他」提供了一個窗體中一堆複選框的例子。這就是答案的目的。如果「他」具有特定的css'class'es,'name's或容器,那麼將它排除在外是無效的。 – 2009-11-03 17:25:12

-2

如果你不想使用jQuery,你總是可以使用

document.GetElementById("cbxCheckbox1"); 
0

標記:

...<input type="checkbox">... 
  1. 檢測是否HTML複選框已被點擊/選擇?

一個:使用jQuery 1.7+:

$(function(){ 
    $("input").click(function() { 
     console.log($(this)[0].checked); 
    });  
}); 
  1. 檢索的複選框(ES)已經被選擇?

一個:再次使用jQuery 1.7+:

console.log($('input:checked')); 

希望這有助於。

1
<form name="myForm"> 
    <input type="checkbox" name="myCheck" 
     value="My Check Box"> Check Me 
    </form> 

    <a href="#" onClick="window.alert(document.myForm.myCheck.checked ? 'Yes' : 'No');">Am I Checked?</a> 

這是一本名爲JavaScript的教科書,由Arman Danesh編寫的10個簡單步驟或更少 - 所以我認爲這是可行的。希望它有幫助

+0

'document.myForm.myCheck.checked'與問題 – Luca 2012-10-10 16:11:05

+0

有點相關哦。以及我認爲這可能有助於看到它的一切。不好意思,請不要擔心 – 2012-10-11 08:54:52

+0

不用擔心,我只是想強調一下你的答案中最有用的部分! :) – Luca 2012-10-11 17:45:23

相關問題