[英]Can't get input value with click event with jquery
我正在动态创建一个包含一些动态生成的按钮的表。 在使用POST
之前,我已经做过同样的事情,并且可以正常工作。 现在,我正在使用AJAX,因此我需要通过click事件获取隐藏form
元素的值。 但是,它总是给我第一个值(第一行/表格)。
以下是精简代码的示例。
每个按钮是否必须使用不同的名称? 如果是这样,我如何将所有这些绑定到click事件?
<pre><code>
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="assets/js/jquery.min.js"></script>
<script type="text/javascript" charset="utf-8">
$(document).ready(function () {
$(document).on("click", "input[name='vsu']", function(event){
console.log('sliste'+$("input[name='sliste']").val());
event.preventDefault();
});
});
</script>
</head>
<body>
<table id="slist">
<tbody>
<tr>
<td>user1</td>
<td>
<form>
<input type="hidden" name="sliste" value="1">
<input name="vsu1" type="submit" value="view">
</form>
</td>
</tr>
<tr>
<td>user2</td>
<td>
<form>
<input type="hidden" name="sliste" value="2">
<input name="vsu2" type="submit" value="view">
</form>
</td>
</tr>
</tbody>
</table>
</body>
</html>
</pre></code>
您需要找到输入元素,它是单击按钮的上一个兄弟元素,因此
$(document).ready(function () {
$(document).on("click", "input[name='vsu']", function (event) {
console.log('sliste' + $(this).prev("input[name='sliste']").val());
event.preventDefault();
});
});
当使用$("input[name='sliste']")
作为选择器时,它将找到具有给定名称的所有输入元素,然后当您使用.val()
作为获取器时,它将返回第一个元素的值在给定的元素集中。
$(document).ready(function() { $(document).on("click", "input[name='vsu']", function(event) { console.log('sliste' + $(this).prev("input[name='sliste']").val()); event.preventDefault(); }); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <table id="slist"> <tbody> <tr> <td>user1</td> <td> <form> <input type="hidden" name="sliste" value="1"> <!-- changed the button type since the code snippet does not allow submit requests--> <input name="vsu" type="button" value="view"> </form> </td> </tr> <tr> <td>user2</td> <td> <form> <input type="hidden" name="sliste" value="2"> <input name="vsu" type="button" value="view"> </form> </td> </tr> </tbody> </table>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.