2012-05-08 186 views
0

我有一個動態生成的列表,其中每個項目包括一個複選框,隨機長度爲零。與單選按鈕不同,所有複選框都可以取消選中,但是像單選按鈕一樣,只有一個可以被選中爲。爲了實施這個,我使用JQuery(基於這裏給出的答案:jQuery - checkboxes like radiobuttonsJQuery:複選框作爲單選按鈕,沒有默認選擇

,因爲它目前爲我的代碼是:

var $radiocheck = $('input.radiocheck'); 
$radiocheck.click(function() { 
    if($(this).is(':checked')) { 
     $(this).attr('checked', false); 
    } 
    else if($(this).not(':checked')) { 
     $radiocheck.removeAttr('checked'); 
     $(this).attr('checked', true); 
    } 
}); 

...但它不工作(複選框處於未選中狀態點擊)。任何幫助表示讚賞!

+1

添加額外的單選按鈕 「以上都不是」。如果您使複選框表現得像其他事情一樣,那麼您會冒着混淆用戶的風險。 – Blazemonger

回答

4
var $radiocheck = $('input.radiocheck'); 

$radiocheck.on('click', function() { 
    $radiocheck.not(this).prop('checked', false); 
    this.checked = this.checked===true ? true:false; // to toggle, otherwise just set to true 
});​ 

FIDDLE

+1

真棒答案,但使用'.prop(「checked」,false);'替換.attr()調用。 [.prop()](http://api.jquery.com/prop/) – DefyGravity

+0

你說得對,編輯! – adeneo

+0

輝煌 - 感謝一堆:) – Eamonn

1

一:

var $radiocheck = $('input.radiocheck'); 

    $radiocheck.on('click', function() { 
     $radiocheck.not(this).attr('checked', false); 
     this.checked = this.checked; 
    }); 

DEMO: One

二:

var $radiocheck = $('input.radiocheck'); 

    $radiocheck.on('click', function() { 
    $radiocheck.not(this).attr('checked', false).find(this).attr('checked', this.checked); 
    }); 

DEMO: Two

1

使用adeneo的方法的另一個答案,但沒有使用的CSS類選擇:

$(document).ready(function() { 
    var $radiocheck = $(":checkbox"); 
    $radiocheck.on('click', function() { 
    $radiocheck.not(this).attr('checked', false); 
    this.checked = this.checked === true ? true : false; 
    }); 
}); 

FIDDLE