【问题标题】: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]

标签: javascript php jquery append each


【解决方案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,它仍然只显示在第一个添加表单
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-28
  • 1970-01-01
  • 1970-01-01
  • 2021-11-10
  • 2023-03-16
相关资源
最近更新 更多