2013-04-30 191 views
0

我有一組三個單選按鈕,它們之間有互斥,因爲我實現了組名屬性,但問題是,在初始階段,沒有選中單選按鈕,enter image description here單擊按鈕時清除再次單擊按鈕

但是,當我選擇任何單選按鈕,然後我不能取消選擇相同的,雖然相互排斥正在進行中,但我希望他們也取消選擇。

enter image description here

我的代碼ASPX是:

<td> 
<asp:RadioButton ID="AChk" runat="server" CssClass="itemRightAlign" GroupName="A"/> 
</td> 
<td> 
<asp:RadioButton ID="DChk" runat="server" CssClass="itemRightAlign" GroupName="A"/> 
</td> 
<td> 
<asp:RadioButton ID="WChk" runat="server" CssClass="itemRightAlign" GroupName="A"/> 
</td> 
+0

類似的問題和潛在的解決方案[這裏](http://stackoverflow.com/questions/4957207/how-to-check-uncheck -radio按鈕上點擊)。 – davmos 2013-04-30 07:20:49

回答

2

,你既有一個代碼問題和誤解。

誤解是關於互斥單選按鈕如何工作(或者應該工作)(或者用戶期望工作)。

代碼問題是,在互斥排列單選按鈕組中,您需要最初選擇其中的一個。

所以,我相信,有解決問題的方法有兩種:

  1. 保持單選按鈕對地表。向該集合添加一個「無」按鈕,以使其工作,就好像其他三個都沒有被選中一樣。最初選擇這個「無」按鈕。

  2. 變化單選按鈕複選框,這樣用戶可以選擇取消它們。然後實施您自己的排除邏輯。我不推薦這個。

+0

那麼對於複選框我需要互斥,爲此我需要使用Ajax複選框互擴展器。 :(所以我會用第一個解決方案。:) – 2013-04-30 09:37:14

0

使用此功能取消:

var radios = document.getElementsByName('A'); 
for(var i=0; i<radios.length; i++) 
{ 
    radios[i].checked = false; 
} 
0

您可以通過使用屬性ondblclick取消選擇單選按鈕。

<input type="radio" name="RadioGroup1 
" value="1" ondblclick="uncheckRadio();"> 
    Apple</label> 

當你的單選按鈕,雙擊,只需調用javascript函數的checked屬性設置爲false。

function uncheckRadio() { 
var choice = document.form1.RadioGroup1; 
for (i = 0; i < choice.length; i++) { 
    if (choice[i].checked = true) 
    choice[i].checked = false; 
} 
} 
1

您將需要使用JavaScript ...

做jQuery的結合,它更容易,以及名稱=應符合您呈現的組名 「名=」 屬性...

var lastChecked = null; 
$('input[name=A]').click(function(){ 
    if (lastChecked == this) { 
    this.checked = false; 
    lastChecked = null; 
    } 
    lastChecked = this; 
});
+0

謝謝。這對我有效。您可能想要將第一行編輯爲「=」而不是「==」。 – 2014-09-19 05:18:21

+0

@SeongLee謝謝,糾正.. :-) – Tracker1 2014-09-22 17:39:35

0

以下是使用屬性ondblclick和jQuery的類似實現。此外,這將允許您使用動態生成的客戶端ID在控件中包含此功能。

後面的代碼:

foreach (ListItem li in rbl.Items) 
    li.Attributes.Add("ondblclick", string.Format("clearCurrentRadioButtonSelection(\"{0}\")", rbl.UniqueID)); 

ASPX頁面

function clearCurrentRadioButtonSelection(controlName) { 
    var id = "input[name=" + controlName + "]"; 

    $(id).each(function() { 
     $(this).attr('checked', false); 
    }); 
}