javascript启用单击时禁用单选按钮,一次只选择一个

时间:2011-12-12 22:28:35

标签: javascript html radio-button toggle

我正在尝试这样做。

我有3个单选按钮,

  1. 如果点击收音机并设置,下次我点击它。这应该 未经检查/休息。
  2. 我想在没有jquery的标准javascript中做,因为目前还没有。

    到目前为止,这是我的代码。

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
     <head>
      <title> New Document </title>  
      <meta name="Author" content="">
      <meta name="Keywords" content="">
      <meta name="Description" content="">
    
      <script type="text/javascript">
    
       function toggle(radioBtn)
       {
         if(radioBtn.checked)
         {
           radioBtn.checked = false;
         }
         else
         {
          radioBtn.checked = true;
         }
    
    
         // only select one at a time.
    
       }
    
      </script>
     </head>
    
     <body>
     <form id="myForm" name="myForm">
      <input type="radio" name="radioBtn" id="radioBtn1"    value="A" onClick="toggle(this);" />
    <input type="radio" name="radioBtn" id="radioBtn1"    value="B" onClick="toggle(this);"/>
    <input type="radio" name="radioBtn" id="radioBtn1"    value="C" onClick="toggle(this);"/>
    </form>
     </body>
    </html>
    

    请帮忙。我们将不胜感激。 感谢

4 个答案:

答案 0 :(得分:9)

你可以做一些简单直接的内联,如下所示:

<input type="radio" name="radioBtn" id="radioBtn1" value="A" onMouseDown="this.__chk = this.checked" onClick="if (this.__chk) this.checked = false" />
<input type="radio" name="radioBtn" id="radioBtn2" value="B" onMouseDown="this.__chk = this.checked" onClick="if (this.__chk) this.checked = false"/>
<input type="radio" name="radioBtn" id="radioBtn3" value="C" onMouseDown="this.__chk = this.checked" onClick="if (this.__chk) this.checked = false"/>

答案 1 :(得分:0)

记录检查哪个radioButton,哪些不是(可以使用隐藏字段或数组),并按照惯例设置已选中/未选中

答案 2 :(得分:0)

您可以绕过浏览器的单选按钮的默认行为,并通过创建一个额外的“隐藏”单选按钮来实现您之后的切换效果,并在用户切换时为其模拟click事件可见按钮。请参阅此jsFiddle中的一个工作示例:http://jsfiddle.net/k73Nt/

答案 3 :(得分:0)

这可能不是一个解决方案,它将进入书中以保持清洁,但我让它工作。

http://jsfiddle.net/C9At9/3/

HTML:

<input type="radio" name="radioBtn" id="radioBtn1" value="A" onmouseup="toggle(this);"/>
<input type="radio" name="radioBtn" id="radioBtn2" value="A" onmouseup="toggle(this);" />
<input type="radio" name="radioBtn" id="radioBtn3" value="A" onmouseup="toggle(this);"/>

使用Javascript:

function toggle(radioBtn)
 {   
   if(radioBtn.checked)
   {
     setTimeout("disableRadio('"+radioBtn.id+"')",10);
   } else {
     radioBtn.checked = true;
   }
 }

function disableRadio(radioId) {
    el = window.document.getElementById(radioId);
    el.checked = false;
}

您的代码无效,因为javascript setter被html点击事件或其他东西所推翻。我不知道如何以正确的方式解释它,但延迟解决了你的问题。

希望这会有所帮助!