背景资料
我有一些加载网络表单的PHP / HTML / JavaScript代码。出于讨论的目的,让我们说这个表单是编辑小部件的详细信息"页。 这个表单包含一个表...带有一堆行。每行有一个下拉框 - 每行相同 - 并且下拉的选定值是根据数据库中先前保存的数据确定的。
问题
下拉列表没有被我正在制作的.append()调用填充,我也不知道原因。
代码
这是我逻辑中的事件序列:
PHP逻辑 - 遍历需要包含在表中的每条记录......并创建一个EMPTY框,如下所示:
frame_in_bytes
然后,一旦页面完成渲染,我在我的document.ready部分中有这个逻辑:
for ($i=0; $i < count($w_details['tc']); $i++) {
....
//logic to build basic table structure including:
echo "<td><select placeholder='Domain:' name='domain" .$i ."' id=domain" .$i ."'></select></td>";
echo "<input type='hidden' class='domainvals' id='hidden_domain" .$i . "' name='hidden_domain" .$i. "' value='" .$wdetails['tc'][$i]['destdomain'] . "'/>";
...
}
到目前为止我尝试过的事情:
在F12调试窗口中,我已经确认我有一个&#34; domain0&#34;像这样控制:
//populate domain list.
$.ajax({
url:"<?php echo site_url('domain/domainlist');?>",
type:'POST',
dataType:'json',
success: function(res) {
//loop through results
var htmlstring = "<option value='' disabled selected>Select the Domain</option>";
for (var key in res) {
if (res.hasOwnProperty(key)) {
htmlstring += "<option value=" + res[key]['domain'] + ">" + res[key]['domain'] + "</option>";
}
}
//find every hidden input that is storing a domain value
$('.domainvals').each(function (i, row) {
console.log($(this).val()) ;
$('#domain'+i).append(htmlstring);
//TODO: add logic to select the right value using $this.val();
});
},
error: function(xhr, req, err) {
//var err = eval("(" + xhr.responseText + ")");
console.log(err.Message);
}
});
没有出现错误消息(只是空数组/列表),所以我肯定已经创建了它。我还可以看到表单上的控件。
我尝试更改将html附加到硬代码名称的代码,如下所示:
$("#domain0").find('option')
同样,没有错误,但它没有填充列表。
任何建议将不胜感激。我确定它很简单,我只是缺席了。
答案 0 :(得分:0)
您可以使用Javascript / Jquery附加一个选项,如下所示:
$('myDropDown').append($('<option>', {
value: optionValue,
text: optionText
}));
答案 1 :(得分:0)
如果您要添加这些域
动态$(&#34; #domain(n)的&#34)
元素,然后您不能像
那样访问它们$("#domain0")
DO
$(document).find("#domain0") or $("body").find("#domain0")
代替。