gpt4 book ai didi

jquery - 克隆表格无法提交

转载 作者:行者123 更新时间:2023-12-01 01:09:12 25 4
gpt4 key购买 nike

我有一个表,其中每一行对应一个表单。虽然标记无效( <form> 标签紧随 <tr> 之后),但提交按钮按预期工作(即,它们提交包含的表单)。到目前为止,一切顺利。

现在我准备一个新行附加到上述表格中。它隐藏在一个单独的表中。当按下“添加年份”按钮时,我克隆 tr与表格并将其附加到表格中。但令人惊讶的是:新创建的提交按钮没有提交。 (我在没有克隆的情况下尝试了相同的操作,没有什么区别。)

以下是代码片段(包含在 JSFiddle 中):

HTML

<div id="min" style="display:none">2010</div>

<div id="div_newyr" style="display:none">
<table>
<tr>
<form action="" method="post" name="form1" id="form1">
<td class="td_yr">
<span></span>
<input type="hidden" name="yr" value="" />
</td>
<td><input type="submit" name="sub_close" value="Close" /></td>
</form>
</tr>
</table>
</div>

<table>
<tbody id="tb_yrs">
<tr>
<form action="" method="post" name="form2" id="form2">
<td class="td_yr last">
<span>2010</span>
<input type="hidden" name="yr" value="2010" />
</td>
<td><input type="submit" name="sub_close" value="Close" /></td>
</form>
</tr>

</tbody>
<tbody>
<tr>
<td><input type="button" id="but_newyr" value="Add a year" /></td>
</tr>
</tbody>
</table>

JS

jQuery(document).ready(function() {
$('#but_newyr').click(function() {
var firstYear = parseInt($('div#min').html());
firstYear--;
newRow = $('#div_newyr').find('tr').clone(true);
newRow.find('td.td_yr').children('span').html(firstYear).next('input').val(firstYear);

$('#tb_yrs').append(newRow);
$('div#min').html(firstYear);
});
});

//added on a tip from a deleted answer
$(document).on('click', "input[type=submit]" ,function(){
$(this).closest('form').submit();
});

如果我使要克隆的表单可见,以便在克隆之前检查它是否有效,我可以提交该表单。所以,问题是:原始表单和附加/克隆表单或提交按钮有什么区别?

(只是旁注:附加行与 Chrome 下的第二个单元格一致 - 但我认为它与提交无关。)

最佳答案

尝试

$(this).closest('tr').find('form').submit();

而不是

$(this).closest('form').submit();

但更好的是避免无效标记,并且:

  1. 不要使用表格进行布局
  2. 不要使用 form 元素 - 使用 jQuery serialize并根据需要提交行

关于jquery - 克隆表格无法提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12020034/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com