javascript - 如何只触发一个复选框检查操作

标签 javascript jquery

我有一组复选框和一个在选中时添加输入的函数。我遇到的问题是出现多个输入,而不是每个复选框一个。

$("#myletters").change(function(e) {
  $("input[name='letters']:checked").each(function() {
    var letterChecked = $(this).attr("id");
    console.log(letterChecked);
    $("#" + letterChecked).after(
      "<label id='" +
        letterChecked +
        "-school-label'>Please enter your " +
        letterChecked +
        " school<input id='" +
        letterChecked +
        "-school' type='text'></input></label>"
    );
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="myletters">
  A<input type="checkbox" name="letters" value="A" id="C" />
  B<input type="checkbox" name="letters" value="B" id="B" />
  C<input type="checkbox" name="letters" value="C" id="A" />
</div>

如果未选中,我应该使用什么函数来删除输入?

最佳答案

嗯。对于每次更改,您都为每个复选框运行一个函数。 如果我之前选中了一个复选框,那么它就会被选中,并且您的函数与所有选中的复选框相关。

我建议仅运行该函数一次,而不是使用 .each 函数。因此,对于复选框中的每个更改,如果已选中“当前”更改复选框 - 添加输入。

检查这个working jsfiddle .

$('#myletters input[type="checkbox"]').change(function(e) {
  if($(this).is(':checked')) {
    var letterChecked = $(this).attr("id");
    console.log(letterChecked);
    $("#" + letterChecked).after(
      "<label id='" +
        letterChecked +
        "-school-label'>Please enter your " +
        letterChecked +
        " school<input id='" +
        letterChecked +
        "-school' type='text'></input></label>"
    );  
  }
});

关于javascript - 如何只触发一个复选框检查操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60137846/

相关文章:

javascript - 如何使用 impromptu 让 Jquery 充当确认框

javascript - 安全扫描显示 JS 脚本文件中存在漏洞

javascript - JQuery - 根据数据库中的值使用 ajax 突出显示元素

javascript - 像 Facebook 一样禁用带有叠加层的滚动

javascript - 如何在单击阅读更多按钮或链接时扩展文本?

javascript - 表格行之间的轻松比较

javascript - 如何使用 Mac OS 和 Firefox 触发 cmd+h?

javascript - 不要让用户点击图片太多次

jquery - 用于客户端服务器应用程序的 Angularjs

jquery 切换按钮值