2010-07-23 41 views
1

我有一個問題,我希望有人可以幫助我。我能夠檢索我的複選框的文本值。我想要實現的是每次單擊複選框時,它都會將文本添加到輸入中,其ID爲「Selected」。例如:如果複選框a,複選框b,複選框c被選中,我想顯示「a,b,c」。相反,我得到的是當前正在檢查的文本。任何幫助都會很棒。無法獲取值以繼續添加到輸入

$(document).ready(function(){ 
    $("#ListBox input").click(function() { 
      var cbText = $(this).next().text(); 

      $('#Selected').val(cbText);  
     }); 
}); 
+2

你也可以顯示HTML代碼嗎? – 2010-07-23 16:14:04

回答

2

這聽起來像你想#Selected有當前選定的複選框的文本值。

如果這是正確的,試試這個http://jsfiddle.net/nAACW/4/(更新)

$(document).ready(function(){ 
    $("#ListBox input").click(function() { 
     var cbText = $('#ListBox').find(':checked').next() 
      .map(function() { 
       return $.text([this]); 
      }).get().join(', '); 

     $('#Selected').val(cbText);  
    }); 
});​ 

編輯:改爲使用$('#ListBox').find(':checked')而不是$(this).parent().find(':checked')的正確建議的@Felix克林

+0

+1比我的答案更好,因爲它的工作原理;)但我會使用'$(「#ListBox」)。find(':checked')'因爲你不知道這些複選框在哪裏('parent()'可能不是所有盒子的父母)。 – 2010-07-23 16:29:05

+0

@Felix - 非常好的一點。我會更新。 :o) – user113716 2010-07-23 16:30:16

+0

謝謝,這似乎有伎倆。取而代之的是$(「#ListBox:checkbox」),我不得不用$(「#ListBox input」)替換它。一個問題,雖然帕特里克,我的結果回來作爲一個,B,C ...我怎麼能讓它返回一個,B,C呢? @Felix - 也謝謝你。 – hersh 2010-07-23 17:06:43

0

假設喲你的複選框有class ='ListBox'(id應該是唯一的,一個類在多於一個元素上使用),下面的代碼將填充輸入文本字段的ID爲「Selected」的所有複選框的文本類'列表框'當前選中,並以逗號分隔。

var checks = new Array(); 
$(".ListBox input:checked").each(
    function(){checks.push($(this).text())} 
) 
$('#Selected').val(checks.join(','));