2010-01-25 117 views
3

如何使單選按鈕的操作更像複選框?我需要一個單選按鈕的功能,但它需要能夠被取消選擇。使單選按鈕「可選」:HTML

+0

您是否需要一次選擇多個複選框? – toddk 2010-01-25 17:50:42

+0

不需要。單選按鈕需要像單選按鈕一樣工作 - 它們只需要被取消選擇即可。 – 2010-01-25 17:52:02

+1

爲什麼不使用複選框? – miku 2010-01-25 17:52:33

回答

12

通常這是通過添加另一選項「無」來完成的。用戶不會指望單擊選定的單選按鈕將取消選擇它,因爲這不是正常行爲。

另一個不常用的選項是「清除」按鈕。雖然我不喜歡這個選項。

+4

+1不改變基本表單元素的基本行爲。它極大地混淆了用戶。 – 2010-01-25 18:02:19

3

您可以創建一個「none」選項,或者創建一個javascript按鈕來取消選擇每個單選按鈕。我想知道單選按鈕的onclick事件是否已經被選中...

2

您可以添加一個onClick函數給每個單選按鈕,如果它被選中時(如果沒有嘗試過,但似乎是合理的),它將被取消選擇它。儘管這對於大多數用戶來說確實是出乎意料的行爲 - 我認爲其他答案建議選擇「無」選項更好。

編輯:只是爲了好玩,我試了一下。有用。我的代碼很俗氣,只是爲了快速測試。

<script> 
    var x = false; 
</script> 

<input type="radio" value="test 1" name="1" onmousedown="if (this.checked) { x = true; }" onclick="if (x) {this.checked = false; x = false; return true;}" />1 
<input type="radio" value="test 2" name="1" onmousedown="if (this.checked) { x = true; }" onclick="if (x) {this.checked = false; x = false; return true;}" />2 
<input type="radio" value="test 3" name="1" onmousedown="if (this.checked) { x = true; }" onclick="if (x) {this.checked = false; x = false; return true;}" />3 
1

您可以使用其他人建議的「無」選項。如果這是不可接受的,您的其他選項有:

  1. 選中邏輯複選框只接受一個選擇。
  2. 僅允許單個選擇的列表框。