在JQuery中获取已选中复选框的值

时间:2011-07-10 11:37:56

标签: jquery checkbox

我是jquery的新手,我有一个疑问。我有以下jQuery脚本来检查选中的复选框的数量。

<script>
function countChecked() {
  var n = $("input:checked").length;
  $("div").text(n + (n <= 1 ? " is" : " are") + " checked!");
}
countChecked();
$(":checked").click(countChecked);
</script>

但是,如果我在整个页面中只有一组复选框,则此方法有效。但是我在页面中有几组不同的复选框和单选按钮。我想要将jQuery绑定到的复选框,其name属性为'selectArticle []'。

我对上述脚本做了哪些更改,使其仅监视这些复选框。也可以修改上面的脚本来实际获取所检查的checbox的值。

有人可以为我修改上面的脚本吗...谢谢!

4 个答案:

答案 0 :(得分:4)

Filter by attribute [docs]。我认为您的代码实际上不正确,您只将事件处理程序绑定到已选择的元素。如果要将其绑定到该组的所有复选框,请选择所有这些复选框:

var $checkboxes = $("input[name='selectArticle[]']");

function countChecked() {
  var n = $checkboxes.filter(":checked").length;
  $("div").text(n + (n <= 1 ? " is" : " are") + " checked!");
}

$checkboxes.change(countChecked).change();

缓存元素($checkboxes)比在每次调用处理程序时搜索它们更好。

如果您确实只想将处理程序绑定到选定的处理程序,请绑定事件处理程序,如下所示:

$("input[name='selectArticle[]']:checked").change(countChecked).change();

最好将事件处理程序绑定到change事件(也可以通过键盘更改选项)。

您还看到,它不是调用countChecked,而是在绑定事件处理程序后通过调用change手动触发change事件。

答案 1 :(得分:0)

使用类似的东西:

$("input[name='selectArticle[]']:checked")

答案 2 :(得分:0)

而不是做

$("input:checked").length;

你可以做到

$("input[name='selectArticle[]']:checked").length;

已知属性[name = certainname]会导致代码出现延迟。更好的是给你需要某个类的所有复选框,然后执行以下操作:

<script>
function countChecked() {
  var n = $("input.classname:checked").length;
  $("div").text(n + (n <= 1 ? " is" : " are") + " checked!");
}
countChecked();
$(".classname:checked").click(countChecked);
</script>

修改

如果您想使用该值,您可以执行以下操作:

<script>
function alertValues() {
  $("input.classname:checked").each(function() {
        alert($(this).val());
  }
}
alertValues();
</script>

如果您现在调用alertValues(),它将警告所选复选框的值。

答案 3 :(得分:0)

$( “输入[名称= '复选框名']:检查”)长度

其中checkbox-name:是复选框列表的名称