动态创建输入字段时,<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,为啥?的主要内容,如果未能解决你的问题,请参考以下文章