我有一个生成一堆这样的循环:
<textarea id="uar"></textarea>
同一个循环会在每个textarea旁边生成一个提交链接。
该链接将发布此表单:
<form action="php/unApprovePost.php" method="POST" id="unApprovePost">
<input type="hidden" id="uaid" name="uaid"/>
<input type="hidden" id="uadc" name="uadc"/>
</form>
我成功填充#uaid
,但是当我尝试填充#uadc
时,只有循环的第一次迭代才具有功能。我的意思是 - 只有第一个textarea才能正确发布我想要的内容。如果我尝试使用除第一个之外的任何textareas,他们不提交任何东西。我认为这与HTML中ID的唯一性有关。我尝试使用类.uar
,但这也不起作用 - 相同的行为。有什么帮助吗?
这是我的jQuery代码:
$('#unApprovePost').submit(function() {
$('#uadc').val($('#uar').val());
});
修改:
有一个动态数量的循环迭代,所以我真的不能像class =“uar1”。我尝试为textareas创建类.uar
并使用此jQuery代码:
$('#unApprovePost').submit(function() {
$('#uadc').val($('.uar').val());
});
但问题仍然存在。
答案 0 :(得分:2)
您不能拥有多个具有相同id
的HTML元素。这是完全错误的,它可能会导致页面中出现一些奇怪的行为。只有第一个textarea工作是完全正常的,因为jQuery将查找给定的id,找到第一个,然后发送表单。
当你总是使用同一个类时,同样的问题,jQuery找到第一个并发送表单。
我建议您为每个textarea使用不同的class
(即uar1,uar2,uar3等)
答案 1 :(得分:1)
ID应该在页面上是唯一的。 jQuery / javascript只期望在ID引用时存在一个元素。
使用class
或name
循环元素,以符合您的需要为准。
答案 2 :(得分:0)
$('#uadc')
返回ID为uadc的元素。如果您有多个具有该ID的元素,则无法使用。
<input name="uadc"/>
将使用密钥uadc将其值提交给服务器。如果您在同一表单中有多个具有相同名称的输入,则它将无效。
答案 3 :(得分:0)
如果你以自己的形式包装每个id和提交它应该有效。这将允许每个提交根据所选提交发送正确的文本区域。
<form action="php/unApprovePost.php" method="POST" id="unApprovePost">
<input type="hidden" id="uaid" name="uaid"/>
<input type="hidden" id="uadc" name="uadc"/>
<input type="submit" id="submit" name="submit"/>
</form>
否则你可以手动建立一个包含所有id的列表,如果你真的想要并发送一个列表。这可能看起来像:
var values = []
$.each($('#uaid'), function(i, item){
values.append($(item).val());
}
结果将是一个值数组,然后您可以手动将其发布到页面。