【问题标题】:How can I check if Dynamically created Select Boxes have been selected如何检查是否选择了动态创建的选择框
【发布时间】:2026-02-06 17:10:01
【问题描述】:

我有一些代码硬编码了一个联系人选择框,然后如果您单击添加按钮,它会添加更多联系人。可以从下拉列表中选择每个联系人,并在位置文本框中提供位置。

我希望在提交时能够知道他们是否选择了某人,如果没有,我想清除位置框,因为如果没有联系,则无法找到位置。

<!--- The myContactCount variable is set in another part of javascript this is the current count plus one of the number of current select boxes. --->

   <script type="text/javascript" language="javascript">
      var e='';
      var contactSelectedValue='';

      for(var i=1;1<myContactCount;i++){
         e = document.getElementById('myContactID_'+i);
         contactSelectedValue = e.options[e.selectedIndex].value;
         /* I am trying to alert the value so I can then use a if statement to check for null or even change the 'Select a Contact' value to 0 and test for that. */

        alert(contactSelectedValue);
     }
   </script>

   <!--- the ID will be 1-100 depending on how many contacts they have added --->

   <select name="myContactID_#ID#">
      <option value="">Select a Contact</option>
      <option value="1">Abe</option>
      <option value="2">Barbara</option>
      <option value="3">Cavlin</option>
   </select>

因此,在动态创建它们之后,它们的代码将如下所示。

<select name="myContactID_1">
   <option value="">Select a Contact</option>
   <option value="1">Abe</option>
   <option value="2">Barbara</option>
   <option value="3" selected="selected">Cavlin</option>
</select>

<select name="myContactID_2">
   <option value="">Select a Contact</option>
   <option value="1">Abe</option>
   <option value="2" selected="selected">Barbara</option>
   <option value="3">Cavlin</option>
</select>


<select name="myContactID_3">
   <option value="">Select a Contact</option>
   <option value="1" selected="selected">Abe</option>
   <option value="2">Barbara</option>
   <option value="3">Cavlin</option>
</select>

【问题讨论】:

  • 提交表单时,会发送提交时表单中的值。无论是否使用 javascript 插入了元素,都会发生这种情况,因此检查是否选择了任何内容应该是微不足道的,只需查看它是否是表单返回数据的一部分?

标签: javascript


【解决方案1】:

您的脚本有几个问题:-

1&lt;myContactCount 而不是 i&lt;=myContactCount 并且您在选择和 试图通过 id 获取它。

Demo

HTML

<select id="myContactID_1">
   <option value="">Select a Contact</option>
   <option value="1">Abe</option>
   <option value="2">Barbara</option>
   <option value="3" selected="selected">Cavlin</option>
</select>

<select id="myContactID_2">
   <option value="">Select a Contact</option>
   <option value="1">Abe</option>
   <option value="2" selected="selected">Barbara</option>
   <option value="3">Cavlin</option>
</select>


<select id="myContactID_3">
   <option value="">Select a Contact</option>
   <option value="1" selected="selected">Abe</option>
   <option value="2">Barbara</option>
   <option value="3">Cavlin</option>
</select>

JS

 var e='';
      var contactSelectedValue='';

      for(var i=1;i<=3;i++){
         e = document.getElementById('myContactID_'+i);
         contactSelectedValue = e.options[e.selectedIndex].value;
         /* I am trying to alert the value so I can then use a if statement to check for null or even change the 'Select a Contact' value to 0 and test for that. */

        alert(contactSelectedValue);
     }

【讨论】:

  • 谢谢 ID 是我忽略的...我正在升级别人的代码。还好我用这个名字输入了错误。这是我的主要问题。