使用JavaScript启用和禁用复选框

3

我已经尝试解决我的问题几个小时了。由于我对JavaScript还不是很熟练,所以如果我说话听起来很愚蠢,请谅解。遗憾的是我不知道jQuery,我开始觉得这阻碍了我找到解决方案。

我想做的是有一个复选框,它可以启用被禁用的单选按钮。如果有意义的话。

举个例子:

  • 选择1
  • 子选项
  • 子选项
  • 子选项

我希望能够通过点击第一个复选框(选择1)来启用子选项。如果没有点击,则应将子选项禁用。 :-)

这是我目前的进展:

<script>
function enableRadios(x) {
    var formElement = eval("checkbox" + x)
    if (formElement[0].disabled) {
        formElement[0].disabled = false
        formElement[1].disabled = false
    } else {
        formElement[0].disabled = true
        formElement[1].disabled = true
    }
 }</script>

<body><input type="checkbox" name="main" value="main" onClick="enableRadios(x)">
<input disabled type="radio" value="1" name="x">
<input disabled type="radio" value="2" name="x">
<input disabled type="radio" value="3" name="x">
<input disabled type="radio" value="4" name="x">
<input disabled type="radio" value="5" name="x">
<input disabled type="radio" value="6" name="x"></body>

非常感谢您的帮助!


嗨,好问题。JavaScript 不是我的强项,所以我只能把你引荐到这个类似的问题,也许你可以将其继承到你的工作中? 我的假设是这部分有误,但我不使用 JavaScript,“if (formElement[0].disabled) { formElement[0].disabled = false formElement[1].disabled = false } else { formElement[0].disabled = true formElement[1].disabled = true }” https://dev59.com/2FTTa4cB1Zd3GeqPxPXA - Philip Gullick
1个回答

2

您需要传递一个包含无线电名称'x'的字符串,而不是传递变量x

<script>
function toggleRadios(name) {
    var elems = document.getElementsByName(name);
    for(i=0; i<elems.length; i++) {
        elems[i].disabled = !elems[i].disabled;
    }
}
</script>

<input type="checkbox" name="main" value="main" onclick="toggleRadios('x')">
<input disabled type="radio" value="1" name="x">
<input disabled type="radio" value="2" name="x">
<input disabled type="radio" value="3" name="x">
<input disabled type="radio" value="4" name="x">
<input disabled type="radio" value="5" name="x">
<input disabled type="radio" value="6" name="x">

http://jsfiddle.net/samliew/B6tF7/


+1:在toggleRadios函数中传递this.checked作为参数并根据该值启用或禁用是否更好? - naveen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接