2011-05-21 33 views
1

这是我的下面的代码来检索使用jquery的复选框值。Jquery映射函数失去状态

<div id="checkboxdiv"> 
<input type="checkbox" name="test" value=1 onclick="getVals();" checked/> 
<input type="checkbox" name="test" value=2 onclick="getVals();" checked/> 
<input type="checkbox" name="test" value=3 onclick="getVals();" checked/> 
<input type="checkbox" name="test" value=4 onclick="getVals();" checked/> 
</div> 

下面是jQuery脚本功能:

function getVals(){ 
    var values=$("#checkboxdiv input[name=test]:checked").map (function(){ 
    return $(this).val();}).get().join(','); 
    alert(values); 
} 

当我执行上面的代码中第一次,这是工作fine.When我开始取消任何复选框 它给像如果我取消结果第四个复选框,它给结果像,2,3

我不明白上面的代码有什么问题,任何提示赞赏。

+2

有缺少‘)’中的代码 - 是只是一个抄写错误? (这是对“.map()”的调用)。 – Pointy 2011-05-21 13:28:06

+0

此外,它应该是“:checked”,而不是“.checked” - 也许你应该仔细检查代码,以防止大量的误导答案,如果这些印刷错误实际上并不存在于您的真实代码中。 – Pointy 2011-05-21 13:29:24

回答

6

你的代码工作正常如果你解决这两个问题:

  1. 添加缺少“)”为“.MAP()”叫
  2. 的选择应以结束‘:选中’不是“.checked”

Here is a jsfiddle.

+0

对不起,上面的语法错误,我只想用上面的代码,它总是没有采取第一个复选框的值。 – user569125 2011-05-21 13:51:56

+0

我从你的代码制作的jsfiddle似乎总是可以正常工作。我在上面的答案中描述的唯一区别是:添加了缺失的“)”,并且“.checked”更改为“:checked”。 – Pointy 2011-05-21 13:54:53

+0

是的你的权利,但我不明白,为什么它总是丢失我的原始代码中的第一个索引值,我检查了第一个索引复选框,它包含值和id都存在。令人惊讶的是有时它也会重新调整第一个索引值。 – user569125 2011-05-21 13:57:51