我正在构建一个表单,其中需要多个可选输入,我所拥有的基本上是这样的:
每当用户按下加号按钮时,表单输入的一个新行应该被添加到表单中,我该如何在jQuery中实现这一点?另外,当所有行(或仅最后一行,如果更容易/更快)**都被填充时,是否可以自动添加一个新行?**这样用户就不需要按加号按钮了。
我很抱歉问了这么一个基本的问题,但我对jQuery还是很绿色的,我可以用PHP来做这件事,但我相信Javascript / jQuery在这里扮演了更合适的角色。
@亚历克斯:
<!DOCTYPE html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js"></script>
<script type="text/javascript">
$form = $('#personas');
$rows = $form.find('.person');
$('a#add').click(function() {
$rows.find(':first').clone().insertAfter($rows.find(':last'));
$justInserted = $rows.find(':last');
$justInserted.hide();
$justInserted.find('input').val(''); // it may copy values from first one
$justInserted.slideDown(500);
});
</script>
</head>
<body>
<form id="personas" name="personas" method="post" action="">
<table width="300" border="1" cellspacing="0" cellpadding="2">
<tr>
<td>Name</td>
<td>More?</td>
</tr>
<tr class="person">
<td><input type="text" name="name[]" id="name[]" /></td>
<td><a href="#" id="add">+</a></td>
</tr>
</table>
</form>
</body>
</html>
5条答案
按热度按时间4uqofj5v1#
这将让您接近,添加按钮已从表中删除,所以您可能要考虑这个...
HTML标记如下所示
EDIT在插入后清空文本框的值。
EDIT 2无法控制自己,要重置插入TR中的所有下拉列表,您可以执行此操作
剩下的就交给你了!
qoefvg9y2#
作为对上述答案的补充:你可能需要更改输入元素的名称/id中的id(请注意,你不应该在字段名称中有数字):
我已经这样做了一些全局变量默认设置为0:
在克隆并重置新行中的值之后,在add函数中:
kzipqqlq3#
我试过这样的东西,效果很好;
这是html部分:
这是Javascript部分;
最后PHP提交部分:
你可以通过Dynamic table row inserter找到更多细节
bkhjykvo4#
未测试。修改以适应:
这比复制innerHTML要好,因为你会丢失所有附加的事件等等。
aor9mmx15#
在其他答案的基础上,我做了一些简化。通过克隆最后一个元素,我们免费获得了“add new”按钮(由于克隆,您必须将ID更改为类),并且还减少了DOM操作。我不得不使用filter()而不是find()来仅获得最后一个元素。