我已經在很多的話題一直在尋找,但我沒有發現任何東西,真正符合我的問題,以取消一個單選按鈕:如何通過點擊它第二次
我要讓單選按鈕uncheckable (即,當它已經被選中時,通過點擊來取消單選按鈕)。
我發現使用隱藏的單選按鈕作爲臨時比較對象一些解決方案,但是這並不適合我現有的情況下,所以我想這樣做沒有其他單選按鈕。
我想簡單的測試和修改的「的onclick」事件的單選按鈕的狀態/值,但它一直不是全成...提前
感謝, 克萊姆。
我已經在很多的話題一直在尋找,但我沒有發現任何東西,真正符合我的問題,以取消一個單選按鈕:如何通過點擊它第二次
我要讓單選按鈕uncheckable (即,當它已經被選中時,通過點擊來取消單選按鈕)。
我發現使用隱藏的單選按鈕作爲臨時比較對象一些解決方案,但是這並不適合我現有的情況下,所以我想這樣做沒有其他單選按鈕。
我想簡單的測試和修改的「的onclick」事件的單選按鈕的狀態/值,但它一直不是全成...提前
感謝, 克萊姆。
我知道這種行爲是非標準的單選按鈕,但海報所要求的功能。以下是我過去使用的代碼。我發現它並不是最優化的(假設有大量的單選按鈕),但我也沒有花時間做這種優化。
// Allow for radio button unchecking
$(function(){
var allRadios = $('input[type=radio]')
var radioChecked;
var setCurrent = function(e) {
var obj = e.target;
radioChecked = $(obj).attr('checked');
}
var setCheck = function(e) {
if (e.type == 'keypress' && e.charCode != 32) {
return false;
}
var obj = e.target;
if (radioChecked) {
$(obj).attr('checked', false);
} else {
$(obj).attr('checked', true);
}
}
$.each(allRadios, function(i, val) {
var label = $('label[for=' + $(this).attr("id") + ']');
$(this).bind('mousedown keydown', function(e){
setCurrent(e);
});
label.bind('mousedown keydown', function(e){
e.target = $('#' + $(this).attr("for"));
setCurrent(e);
});
$(this).bind('click', function(e){
setCheck(e);
});
});
});
這不是單選按鈕。如果你嘗試做這個工作,你只會混淆你的用戶。
如果你想要的東西,可以檢查,然後選中,使用複選框。單選按鈕僅用於選擇一組選項中的一個。
這樣也好,
onclick="
var isChecked = $(this).attr('is_che');
if (isChecked) {
$(this).removeAttr('checked');
$(this).removeAttr('is_che');
}
else {
$(this).attr('checked', 'checked');
$(this).attr('is_che', 'true');
}"
我完全同意。 – karim79 2010-11-30 10:51:25
如果他意味着將其恢復到原來的未選中狀態,該怎麼辦?對於用戶來說還有點混淆,但這是一個可以理解的要求。 – 2010-11-30 11:00:38