【问题标题】:Link Radiobox button to Input将单选框按钮链接到输入
【发布时间】:2021-05-31 17:00:50
【问题描述】:

我有 2 个单选按钮,每个按钮分别为 Yes 和 No 以及 1 个文本框。如果我选​​中 No 按钮,输入文本框将打开。如果选中是,文本框将被禁用。

此代码运行良好,但如果用户选中“是”,我想删除输入到文本框的内容

function ismcstopu() {
  var chkNo = document.getElementById("radio2_ismcstop");
  var mcnostopreason = document.getElementById("mcnostopreason");
  mcnostopreason.disabled = chkNo.checked ? false : true;
  if (!mcnostopreason.disabled) {
    mcnostopreason.focus();
  } else {
    mcnostopreason.val('');
  }
}
<input type="radio" class="form-check-input" id="radio1_ismcstop" name="ismcstop" onclick="ismcstopu()" value="Yes">Yes
<input type="radio" class="form-check-input" id="radio2_ismcstop" name="ismcstop" onclick="ismcstopu()" value="No">No
<label for="mcnostopreason">If No, Reason:</label>
<input class="inputstyle-100" type="text" id="mcnostopreason" name="mcnostopreason" value="" disabled>

【问题讨论】:

    标签: javascript php html jquery laravel


    【解决方案1】:

    mcnostopreason 不是 jQuery 对象。因此你可以这样做:var mcnostopreason = $("#mcnostopreason");

    或者您可以将mcnostopreason.val('') 更改为mcnostopreason.value = ''(这意味着您不需要更改任何其他内容)

    【讨论】:

    • BTW .val() 是一个jQuery方法,这就是抛出错误的原因
    • 感谢您的解决方案。我是 Web 开发的新手,总是对 JQuery 和 Javascript 感到困惑。
    • 同样的事情发生在我身上!我基本上已经记住了错误!如果你喜欢我的回答,请标记为已回答
    • 如果他们更改为$("#mcnostopreason");,他们还需要将 .disabled 更改为 .prop("disabled",....) 或 .is(".disabled") 就像我在@987654321 中所做的那样@
    【解决方案2】:

    .val 是一个 jQuery 构造,但您使用的是 DOM

    这是一个使用 eventListener 的更好的版本

    document.getElementById("container") 更改为您拥有的任何容器(例如您的表单)

    注意:测试真比测试假通常更好 我还在收音机中添加了标签,这样我们也可以点击是或否

    document.getElementById("container").addEventListener("click", function(e) {
      const tgt = e.target;
      if (tgt.name === "ismcstop") {
        const mcnostopreason = document.getElementById("mcnostopreason");
        mcnostopreason.disabled = tgt.value === "Yes";
        if (mcnostopreason.disabled) {
          mcnostopreason.value = '';
        } else {
          mcnostopreason.focus();
        }
      }
    })
    <div id="container">
      <label><input type="radio" class="form-check-input" id="radio1_ismcstop" name="ismcstop" value="Yes">Yes</label>
      <label><input type="radio" class="form-check-input" id="radio2_ismcstop" name="ismcstop" value="No">No</label>
      <label for="mcnostopreason">If No, Reason:
        <input class="inputstyle-100" type="text" id="mcnostopreason" name="mcnostopreason" value="" disabled>
      </label>
    </div>

    jQuery 版本

    $("[name=ismcstop]").on("click", function() {
      if (this.name === "ismcstop") {
        const $mcnostopreason = $("#mcnostopreason");
        $mcnostopreason.prop("disabled", this.value === "Yes");
        if ($mcnostopreason.is(":disabled")) {
          $mcnostopreason.val("");
        } else {
          $mcnostopreason.focus();
        }
      }
    })
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <label><input type="radio" class="form-check-input" id="radio1_ismcstop" name="ismcstop" value="Yes">Yes</label>
    <label><input type="radio" class="form-check-input" id="radio2_ismcstop" name="ismcstop" value="No">No</label>
    <label for="mcnostopreason">If No, Reason:
      <input class="inputstyle-100" type="text" id="mcnostopreason" name="mcnostopreason" value="" disabled>
    </label>

    【讨论】:

    • 是的..我接受的是第一个..几分钟后这个解决方案出来了..但是两个解决方案都很棒..谢谢你们
    猜你喜欢
    • 2012-03-02
    • 2014-05-31
    • 1970-01-01
    • 2020-09-26
    • 2020-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多