我有一些我需要用户选择的数据。这些值包含在forEach中,其中包含发布所选列表项的表单。
<ul id="results">
<% records.forEach(function(value) { %>
<li>
<form id="detailsForm" action="/search/detail" method="post">
<div>
Employee Id: <%= value.netId %>
Name: <%= value.FirstName%> <%= value.LastName %>
</div>
</form>
</li>
<% }); %>
</ul>
javascript很简单:
<script type="text/javascript">
$("#results").on('click', 'li', function () {
document.getElementById("detailsForm").submit();
});
</script>
问题是无论选择哪条记录,第一个结果总是在帖子中传递的结果。这是有道理的,因为表单名称在forEach中是相同的。
document.getElementById("detailsForm").submit();
我需要一种更好的方法来仅发布点击的列表项。我考虑过以不同的方式进行尝试获取$(this).text(),但是有大量的空格和回车(为清晰起见未显示),我真的需要序列化数据。
答案 0 :(得分:0)
我可以想象您的问题是在循环中使用id
。请注意,id
在页面上必须是唯一的!生成的HTML可能包含多个具有相同ID的表单,因此使用JavaScript getElementById
,您将始终获得第一个
编辑: 因此,删除表单元素的id。 并像这样更改JavaScript:
$("#results").on('click', 'form', function () {
$(this).submit();
});