2011-12-12 81 views
0

我正在尝试这样做。JavaScript启用禁用单选按钮,并一次只选择一个

我有3个单选按钮,

  1. 如果在一个电台点击它的设置,下一次我点击它。它应该 未经检查/休息。

我想在没有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> 

请大家帮忙。您的帮助将不胜感激。 感谢

+1

共享相同“名称”属性的单选按钮将由浏览器管理,因此无法设置多个按钮。换句话说,我不明白你为什么需要代码来做到这一点。 – Pointy

+0

@Pointy,谢谢。你现在正想要另一部分。切换单选按钮。我怎样才能做到这一点。 – Nomad

+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"/> 
+0

非常感谢。有用。 – Nomad

+0

onMouseDown =“this .__ chk这是什么__chk? –

0

保持其单选按钮被选中的记录,这是不(可以用隐藏字段或数组完成),并设置选中/取消accordinally

0

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

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的二传手得到由HTML点击事件什么的否决。我不知道如何以正确的方式解释它,但延迟解决了你的问题。

希望这可以帮到你!

相关问题