jquery 如何根据下拉菜单中的数值生成文本框?

juzqafwq  于 2023-08-04  发布在  jQuery
关注(0)|答案(2)|浏览(95)

我对HTML和JavaScript非常陌生和缺乏经验。对于任何效率低下或语法荒谬的地方,我深表歉意。
我目前正在尝试在HTML页面上包含一个功能,该功能的下拉菜单包含1到4的数值。将根据下拉菜单中选择的值生成相应数量的文本框。
下面是我目前拥有的代码:

<script>
  $("#elementreg").on("change", function() {
  var val = $(this).val();
  
  $(".types").hide().find('input:text').val(''); // 
  if (val) $("#" + val).show();
  });
</script>

<select class="medium" id="elementreg" name="IDs">
    <option value="" selected="selected"></option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>

</select>

<div class="types" id="1">
  <input name="First Chip ID">
</div>

<div class="types" id="2">
    <input name="First Chip ID">
    <input name="Second Chip ID">
</div>

<div class="types" id="3">
    <input name="First Chip ID">
    <input name="Second Chip ID">
    <input name="Third Chip ID">
</div>

<div class="types" id="4">
    <input name="First Chip ID">
    <input name="Second Chip ID">
    <input name="Third Chip ID">
    <input name="Fourth Chip ID">
</div>

字符串
结果是,在下拉菜单上选择值时不会发生任何事情,并且输入框也不会隐藏。我怀疑我需要包含以下CSS代码片段:

.types {
  display: none
}


但我不知道该如何处理这件事。此外,我不确定脚本一开始是否正确实现。任何和所有的建议都非常感谢。

jpfvwuh4

jpfvwuh41#

也许这个答案对没有jquery的动态渲染有帮助

function fn1(val) {
  val = val.value;

  var containerElem = document.getElementById("container");
  containerElem.innerHTML = "";
  if (val == "") return;

  for (let i = 1; i <= val; i++) {
    var elem = document.createElement("input");
    elem.setAttribute("name", "chip" + i);
    containerElem.append(elem);
  }
}

个字符

cuxqih21

cuxqih212#

问题是脚本在呈现DOM元素之前执行。因此$("$elementreg")无法找到用于附加onChange侦听器的元素。
因此,最好将脚本放在正文的末尾,或者使用$( document ).ready()

.types {
  display: none;
}

个字符

相关问题