2011-09-26 56 views
0

我有這組複選框,表現得像單選按鈕。使用javascript對複選框行爲進行修改

我需要一些幫助,讓用戶也可以取消選中一個複選框,這樣組中就不會有選擇。

<label><input type="checkbox" name="cb1" class="chb" /> CheckBox1</label> 
<label><input type="checkbox" name="cb2" class="chb" /> CheckBox2</label> 
<label><input type="checkbox" name="cb3" class="chb" /> CheckBox3</label> 
<label><input type="checkbox" name="cb4" class="chb" /> CheckBox4</label> 


$(".chb").each(function() 
      { 
       $(this).change(function() 
           { 
            $(".chb").attr('checked',false); 
            $(this).attr('checked',true); 
           }); 
      }); 
+1

我不明白什麼是你想要的目的。如果你只允許一個選項,你有沒有考慮使用下拉列表? – Gapton

+1

...或帶有「無」選項的單選按鈕?它的工作原理是 –

回答

3
$(".chb").change(function() 
{ 
    $(".chb").parent().siblings() 
     .find('input').prop('checked', false); 
}); 

甚至更​​好:

var $inputs = $(".chb"); 

$inputs.change(function() 
{ 
    $inputs.not(this).prop('checked', false); 
}); 

而這裏的小提琴:http://jsfiddle.net/zjJKc/

+0

。但是,它消除了單選按鈕的行爲。 – Christian

+0

@Christian - 你是什麼意思的「單選按鈕行爲」?我以爲你的意思是隻能檢查其中的一個,所以當你檢查其中一個時,其他所有人都不會被檢查。這是我的代碼的工作原理。如果這不是你的意思,請解釋你的意思是「單選按鈕行爲」。 –

+0

小提琴的作品。它不起作用我的標記,因爲複選框是在單獨的html元素,而不是在一個單一的組。當我執行它fiebug告訴我「$ inputs.not(this).prop('checked',false); 」不是一個函數 – Christian