我有一个表,每行有一些输入和一个编辑按钮。我需要在用户单击编辑按钮时,我可以在此行中获取输入值,然后执行其他操作。 我使用这段代码,但不行。
$("#editRowButton").click(function () {
var currentTablerow = $(this).parent().parent();
var txtNameValue = $(currentTablerow).find('input[id*="txtName"]').val();
});
我的表结构如下
<table id="Table2">
<thead>
<tr>
<th>
Name
</th>
<th>
Family
</th>
<th>
</th>
</tr>
</thead>
<tbody>
<tr class="itemRow">
<td>
<asp:TextBox Width="70px" ID="txtName" runat="server"></asp:TextBox>
</td>
<td>
<asp:TextBox Width="70px" ID="txtFamily" runat="server"></asp:TextBox>
</td>
<td>
<img id="editRowButton" src="../Images/Edit.gif" />
</td>
</tr>
</tbody>
</table
&GT; itemRow由asp.net listview控件重复 问题出现在下面的代码
中 var currentTablerow = $(this).parent().parent();
var txtNameValue = $(currentTablerow).find('input[id*="txtName"]').val();
我如何用其他解决方案替换查找
答案 0 :(得分:2)
首先,您不能拥有多个具有相同ID的元素。其次,编写如下代码会更容易
$(".editRowButton").live('click', function () {
// To get the closest parent element that is a table row
var currentTablerow = $(this).closest('tr');
// To get all of the inputs
var inputs = currentTablerow.find('input');
// use the values
alert(inputs.filter('.name').val());
});
这也意味着你的html应该类似于
<tr>
<td><input type="text" class="name" /></td>
<td><input type="text" class="email" /></td>
<td><button class="editRowButton">Edit</button></td>
</tr>
答案 1 :(得分:0)
在此代码中,如果find调用返回多于1个输入字段会发生什么?你不能从这样的数组中获取值,你需要遍历它并对每个值做一些事情。
此外,什么不起作用?也许你可以在http://jsfiddle.net/
上加上简洁的例子