在下面的代码中,我有一个包含textbox
和dropdownlist
的表,我可以动态创建新行。
现在我想得到所有的行值。我尝试了以下代码,但它只获得第一行。
$(function () {
$("#Button1").click(function (event) {
// Prevents Form Submission as you want to save data via AJAX
event.preventDefault();
$.ajax({
type: "POST",
url: "NewFile.aspx/InsertData",
data: "{'Quantity':'" + $("#<%=txtQty.ClientID%>").val() + "','ProductID':'" + $("#<%=ddlProduct.ClientID%>").val() + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
async: "true",
cache: "false",
success: function (msg) {
alert("Success");
// On success
},
Error: function (x, e) {
alert("Fail");
// On Error
}
});
});
})
<table id="dataTable" width="350px" border="1" runat="server">
<tr>
<td><input id="checkbox" type="checkbox" name="chk" runat="server"/></td>
<td><input type="text" name="txt" id="txtQty" runat="server"/></td>
<td>
<asp:DropDownList ID="ddlProduct" runat="server" Style="width: 100%; height:23px" ></asp:DropDownList>
</td>
</tr>
</table>
<asp:Button ID="Button1" Text="Save New" type="submit" ClientIDMode="Static" runat="server"></asp:Button>
答案 0 :(得分:0)
您似乎正在使用ASP.NET生成表。 $(&#34;#&lt;%= item.ClientID%&gt;&#34;)为您提供单个项目。我发现使用$(&#39; [id * =&#34; item&#34;]&#39;)查找生成的ASP.NET id中包含特定文本的对象非常有用。如果您的所有文本框的ID都包含相同的文本,则可以获得一系列txtQty
值,如下所示:
var values = $('[id*="txtQty"]').map(function(index) {
return $(this).val();
});
您可以类似地找到其他值。
更新
data: {
quantites: $('[id*="txtQty"]').map(function() { return $(this).val(); }),
// ...
}
更新(根据@ charlietfl&#39;评论)
var rows = $("#<%=dataTable.ClientID%> tr").map(function() {
return {
quantity: $(this).find('[id*="txtQty"]').val(),
// ...
};
});