考虑以下HTML:
<form id="upvoteForm" method="post" action="/post/upvote">
<input type="text" name="post_id" id="post_id"/>
</form>
<form id="downvoteForm" method="post" action="/post/downvote">
<input type="text" name="post_id" id="post_id"/>
</form>
<input type="hidden" id="_postid" value="1"/>
我尝试使用此JavaScript和jQuery将名称为input
的两个post_id
字段设置为_postid
的值:
$(document).ready(function() {
$('#post_id').val($('#_postid').val());
});
但是,正如您可以看到in this jsFiddle,它只设置第一个的值。如何设置它们的值?我认为选择器最终会抓住两者。
现在,我意识到你可能想知道为什么我在这个页面上有两个表格。基本原因是我有button
输入,我按照自己想要的方式设置了输入,但后来我使用onclick
来调用相应表单的submit
。我最终将在这里利用AJAX,但这会在稍后发布。
答案 0 :(得分:7)
id始终是唯一的。你不能选择2个具有相同id的元素。按名称选择
$(document).ready(function() {
$('input[name=post_id]').val($('#_postid').val());
});
答案 1 :(得分:1)
拥有两个具有相同ID的HTML元素是非法的,并且会导致未定义的行为,例如您遇到的问题。但是,使用相同的名称是有效的。因此,您可以使用$('form > input[name=post_id]')
这样的选择器,该input
会在form
内部查找name
,post_id
属性设置为{{1}}。