gpt4 book ai didi

c# - 为什么使用 Jquery 动态生成 DropDown 时只填充第一个 DropDown?

转载 作者:行者123 更新时间:2023-11-28 15:45:27 26 4
gpt4 key购买 nike

我正在尝试创建一个类似于 DataEntry 网格/表的结构,其中用户在单击按钮时追加新行。该行将包含文本框、下拉菜单、日历控件。所有这些都应该在客户端完成。到目前为止,我已经有了这个,正如你所看到的,我正在尝试使用 var 数据对象填充 DropDown(目前仅适用于第一个下拉列表)。如果我能够用硬编码的 var data 填充所有 DropDowns,我可以尝试使用 webmethod 从数据库中获取数据,但首先我应该至少能够先用硬编码值填充所有 DropDowns 以超越它。

代码

  <script src="js/jquery-1.11.0.js" type="text/javascript"></script>

<table id="field">
<tr>
<td>Alternatif <span class='num'>1</span></td>
<td><input type="text" /></td>
<td><select id="myDropDownLisTId"> <input type="text" id="datepicker"></select></td>
</tr>
</table>
<button type="button" id="addField">Add Field</button>
<button type="button" id="deleteField">Delete Field</button>

<script id="template" type="text/template">
<tr>
<td class="number">Alternatif</td>
<td><input type="text" /></td>
<td><select id="myDropDownLisTId"> <input type="text" id="datepicker"></td>

</tr>
</script>
<script type="text/javascript">
$(document).ready(function () {

$("#addField").click(function (event) {
$($("#template").html()).appendTo($("#field tbody")).show("slow");
if ($("td").hasClass("number")) {
var i = parseInt($(".num:last").text()) + 1;
$($("<span class='num'> " + i + " </span>")).appendTo($(".number")).closest("td").removeClass('number');
}
event.preventDefault();
});

$("#deleteField").click(function (event) {
var lengthRow = $("#field tbody tr").length;
if (lengthRow > 1)
$("#field tbody tr:last").remove();
event.preventDefault();
});



var data = [
{ id: '0', name: 'test 0' },
{ id: '1', name: 'test 1' },
{ id: '2', name: 'test 2' },
{ id: '3', name: 'test 3' },
{ id: '4', name: 'test 4' },
];


for (i = 0; i < data.length; i++) {

$("#myDropDownLisTId").append(
$('<option />', {
'value': data[i].id,
'name': data[i].name,
'text': data[i].name
})
);

}
});
</script>

FIDDLE(更新)

http://jsfiddle.net/FSGbh/5/

最佳答案

问题是您的代码中有两次相同的 Id,即 myDropDownLisTId

为了使其正常工作,我刚刚将 Id 更改为类,并且它也在第二个下拉列表中加载数据。

HTML

<table id="field">
<tr>
<td>Alternatif <span class='num'>1</span></td>
<td><input type="text" /></td>
<td><select class="myDropDownLisTId"> <input type="text" id="datepicker" /></select></td>
</tr>
</table>
<button type="button" id="addField">Add Field</button>
<button type="button" id="deleteField">Delete Field</button>
<tr>
<td class="number">Alternatif</td>
<td><input type="text" /></td>
<td><select class="myDropDownLisTId" /> <input type="text" id="datepicker" /></td>
</tr>

jQuery

     $(document).ready(function () {

$("#addField").click(function (event) {
$($("#template").html()).appendTo($("#field tbody")).show("slow");
if ($("td").hasClass("number")) {
var i = parseInt($(".num:last").text()) + 1;
$($("<span class='num'> " + i + " </span>")).appendTo($(".number")).closest("td").removeClass('number');
}
event.preventDefault();
});

$("#deleteField").click(function (event) {
var lengthRow = $("#field tbody tr").length;
if (lengthRow > 1)
$("#field tbody tr:last").remove();
event.preventDefault();
});



var data = [
{ id: '0', name: 'test 0' },
{ id: '1', name: 'test 1' },
{ id: '2', name: 'test 2' },
{ id: '3', name: 'test 3' },
{ id: '4', name: 'test 4' },
];


for (i = 0; i < data.length; i++) {

$(".myDropDownLisTId").last().append(
$('<option />', {
'value': data[i].id,
'name': data[i].name,
'text': data[i].name
})
);

}
});

<强> Live Demo

<强>-----编辑-----

我根据与用户的讨论更新了答案。我对代码做了一些更改。

HTML

<table id="field">
<tbody>
<tr>
<td>Alternatif <span class='num'>1</span></td>
<td><input type="text" /></td>
<td><select class="myDropDownLisTId"> <input type="text" id="datepicker" /></select></td>
</tr>
</tbody>
</table>
<button type="button" id="addField">Add Field</button>
<button type="button" id="deleteField">Delete Field</button>

jQuery

     $(document).ready(function () {
filldd();

var rowstring = "<tr><td class='number'>Alternatif</td><td><input type='text'/></td><td><select class='myDropDownLisTId'/><input type='text' id='datepicker'/></td></tr>";
$("#addField").click(function (event) {
$("#field tbody").append(rowstring);
filldd();
if ($("td").hasClass("number")) {
var i = parseInt($(".num:last").text()) + 1;
$($("<span class='num'> " + i + " </span>")).appendTo($(".number")).closest("td").removeClass('number');
}
event.preventDefault();
});

$("#deleteField").click(function (event) {
var lengthRow = $("#field tbody tr").length;
if (lengthRow > 1)
$("#field tbody tr:last").remove();
event.preventDefault();
});
});

function filldd(){
var data = [
{ id: '0', name: 'test 0' },
{ id: '1', name: 'test 1' },
{ id: '2', name: 'test 2' },
{ id: '3', name: 'test 3' },
{ id: '4', name: 'test 4' },
];

for (i = 0; i < data.length; i++) {
$(".myDropDownLisTId").append(
$('<option />', {
'value': data[i].id,
'name': data[i].name,
'text': data[i].name
})
);
}
}

<强> Live Demo

关于c# - 为什么使用 Jquery 动态生成 DropDown 时只填充第一个 DropDown?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22528720/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com