2011-05-21 79 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