【问题标题】:How to enable the input in checkbox if i check the checkbox? cuz it always disable when i check the checkbox with input type如果我选中复选框,如何启用复选框中的输入?因为当我选中输入类型的复选框时它总是禁用
【发布时间】:2018-04-01 04:24:35
【问题描述】:

如果我选中复选框,如何启用复选框中的输入?

当我选中输入类型的复选框时,它总是禁用。

function ckChange(ckType) {
  var ckName = document.getElementsByName(ckType.name);
  var checked = document.getElementById(ckType.id);

  if (checked.checked) {
    for (var i = 0; i < ckName.length; i++) {

      if (!ckName[i].checked) {
        ckName[i].disabled = true;
      } else {
        ckName[i].disabled = false;
      }
    }
  } else {
    for (var i = 0; i < ckName.length; i++) {
      ckName[i].disabled = false;
    }
  }
}
<input type="checkbox" placeholder="toBeReturn" name="progress" id="progress1" value="1" tabIndex="1" onClick="ckChange(this)"> For use in showroom to be return on
<input type="date" name="progress" id="progress3" placeholder="date">
<br/>
<input type="checkbox" placeholder="OnLoan" name="progress" id="progress2" value="1" tabIndex="1" onClick="ckChange(this)"> On Loan
<br/>
<input type="checkbox" placeholder="Other" name="progress" id="progress6" value="1" tabIndex="1" onClick="ckChange(this)"> Other
<input type="text" name="progress" id="progress3" placeholder="State the Purpose">

我需要帮助来完成我的项目,谢谢!

【问题讨论】:

    标签: javascript html


    【解决方案1】:

    我认为问题在于你的'for'语句,'for'语句匹配了所有的复选框,包括你检查的那个你需要从那时起排除的复选框,所以你可以这样尝试:

    function ckChange(ckType) {
            var ckName = document.getElementsByName(ckType.name);
            var checked = document.getElementById(ckType.id);
    
            if (checked.checked) {
                for (var i = 0; i < ckName.length; i++) {
                    if(ckName[id].id !==checked.id){
                        ckName[i].disabled = false;
                    }
                }
            } else {
                for (var i = 0; i < ckName.length; i++) {
                    if(ckName[id].id !==checked.id){
                        if (!ckName[i].checked) {
                        ckName[i].disabled = true;
                        } else {
                            ckName[i].disabled = false;
                        }
                    } 
                }
            }
        }
    

    【讨论】:

      【解决方案2】:

      只需切换“if”和“else”语句中的内容,就会发生相反的情况。

      此外,如果您在未选中复选框的情况下加载页面,还要在文本输入中添加“禁用”以使其匹配。

      function ckChange(ckType) {
        var ckName = document.getElementsByName(ckType.name);
        var checked = document.getElementById(ckType.id);
      
        if (checked.checked) {
          for (var i = 0; i < ckName.length; i++) {
            ckName[i].disabled = false;
          }
        } else {
      
          for (var i = 0; i < ckName.length; i++) {
            if (!ckName[i].checked) {
              ckName[i].disabled = true;
            } else {
              ckName[i].disabled = false;
            }
          }
        }
      }
      <th>
        <input type="checkbox" placeholder="toBeReturn" name="progress" id="progress3" value="1" tabIndex="1" onClick="ckChange(this)"> For use in showroom to be return on <input type="date" name="progress" id="progress3" placeholder="date" disabled>
      </th>

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-01-09
        • 1970-01-01
        • 1970-01-01
        • 2017-11-12
        • 2021-03-09
        • 2020-01-30
        • 2015-06-04
        相关资源
        最近更新 更多