动态创建输入字段时,<select> 只填充了一次 $.each,为啥?

Posted

技术标签:

【中文标题】动态创建输入字段时,<select> 只填充了一次 $.each,为啥?【英文标题】:When dynamically creating input fields, <select> filled with $.each only once, why?动态创建输入字段时,<select> 只填充了一次 $.each,为什么? 【发布时间】:2020-06-18 02:27:39 【问题描述】:

我尝试将输入字段动态添加到表单中。它工作正常,除了一件事:

我尝试用 $.each 填充 a,但这仅适用于如果我添加更多动态添加的第一个,则保持为空..

#add 按钮处于初始形式:

追加

    $('#add').click(function() 
        i++;
        $dynamic_field').append('' +
        '<h1>Sensor '+i+'</h1>   ' +
        '<tr id="row'+i+'">
        '<td><div class="form-group">\n' +
                 '<label for="InputSensorType">Sensor Type*</label>\n' +
                  '<select class="form-control" id="InputSensorType" name="sensorType[]"></select>\n' 
         '</div></td>\n +'
         '<td>
              <button type="button" name="copy" id="copy" class="btn btn-primary">Copy this sensor
              </button></td><tr>');

每个:

          var jsarray = <?php echo json_encode($sensors)?>;

           $.each(jsarray, function (index, value) 
               $('#InputSensorType').append(('<option value='+index+'>'+value+'</option>'));
           );

谁能帮帮我?

【问题讨论】:

您不应该有多个具有相同 ID (InputSensorType) 的元素,这可能是这里的问题。您必须将其更改为一个类,并将其称为 $('.InputSensorType') $dynamic_field 在客户端是静态的。另外,jsarray 更新在哪里? 在页面顶部,jsarray 由 for 循环从 excel 文件中读取元素并将它们放入数组中进行更新。如果我使用类而不是 ID,我会收到错误:jquery.min.js:2 Uncaught TypeError: Cannot use 'in' operator to search for '1953' in [all array values] 【参考方案1】:

试试这个

var jsarray = '<?php echo json_encode($sensors)?>';
var obj = jQuery.parseJSON(jsarray);
var data = '';
 $.each(jsarray, function (index, value)                
           data +='<option value='+index+'>'+value+'</option>';
            );
 $('#InputSensorType').append(data);

【讨论】:

感谢您的回复:如果我输入这个,我会得到:VM407:1 Uncaught SyntaxError: Unexpected token in JSON at position 896 at the obj var,如果我删除该 var,它仍然只显示在第一个添加表单

以上是关于动态创建输入字段时,<select> 只填充了一次 $.each,为啥?的主要内容,如果未能解决你的问题,请参考以下文章

如何动态创建 <input type="text"/>

JavaScript-如何使用输入字段动态创建多个 div

Bootstrapvalidator 在动态输入字段中不起作用

以动态形式计算选择字段的总和

React:动态添加输入字段到表单

从动态输入字段 JavaScript 读取文本