2009-11-03 124 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