Php 克隆表单中的行的函数存在两个问题
我正在使用一种简单的方法克隆表单上的行。你可以看到这个网页 这是我用来进行克隆的脚本:Php 克隆表单中的行的函数存在两个问题,php,javascript,forms,clone,Php,Javascript,Forms,Clone,我正在使用一种简单的方法克隆表单上的行。你可以看到这个网页 这是我用来进行克隆的脚本: $(document).ready(function() { $(".add").click(function() { $("form > p:first-child").clone(true).insertBefore("form > p:last-child"); return false;
$(document).ready(function() {
$(".add").click(function() {
$("form > p:first-child").clone(true).insertBefore("form > p:last-child");
return false;
});
$(".remove").click(function() {
$(this).parent().remove();
});
});
以下是html格式:
<form method="post" action="bookingengine.php">
<p>
<label>Full Name:</label> <input type="text" name="name" id="name">
<label>Email:</label> <input type="text" name="email" id="email">
<label>Telephone:</label> <input type="text" name="telephone" id="telephone">
<span class="remove">Remove</span>
</p>
<p>
<span class="add">Add fields</span><br /><br /><input type="submit" name="submit" id="submit" value="Submit" class="submit-button" />
</p>
</form>
我在这方面遇到了两个问题,这让我怀疑克隆是否是最好的方法:
如果用户已经在文本框中输入了信息,那么这些信息将与文本框本身一起克隆,我不希望发生这种情况。我想添加添加为空的行
信息将使用PHP提交到电子邮件地址。以下是PHP:
$EmailFrom=
;
$EmailTo=;
$Subject=预订度假酒店$名称
=Trimstripslashes$_POST['name']$电子邮件=
Trimstripslashes$_POST['email'];
美元电话费=
Trimstripslashes$_POST[“电话”]
$validationOK=true;如果
!$validationOK{打印;退出;}
$Body=已进行新的预订
关于撤退,如下所示:$身体=
\n$正文=\n$正文=名称:
; $Body.=$Name$正文=\n;
$Body.=\n$正文=电子邮件:;
$Body.=$Email$正文=\n$身体
.=\n$电话:$身体
.=$电话$正文=\n
$success=mail$EmailTo$Subject,
$Body,发件人:
如果$success{打印;
}其他{print;}?>
我看到的是,只有表单中的最后一行被添加到电子邮件中,大概是因为每个文本框没有唯一的名称或ID。因此,我再次想知道克隆方法是否最适合此任务,如果是,我如何修改代码以包含电子邮件中的所有行
谢谢
尼克要使用PHP,您需要将输入转换为“数组”,方法是在输入名称的末尾添加两个字符的序列“[]”,有关详细信息,请参见第3页 至于用值克隆对象,作为$.add的“单击”处理程序的最后一步,清除最新添加的输入中的值应该非常简单
$(document).ready(function() {
$(".add").click(function() {
var x = $("form > p:first-child").clone(true).insertBefore("form > p:last-child");
x.find('input').each(function() { this.value = ''; });
return false;
});
$(".remove").click(function() {
$(this).parent().remove();
});
});
谢谢TML。用于清除值的修改脚本非常有效。不过,我仍然不清楚阵列。我在每个输入名称的末尾添加了[],但是当提交多行表单时,我仍然只得到一行数据。我需要对PHP进行调整以使其与数组一起工作吗?如果需要,我需要做哪些修改?您可以阅读我在上面发布的文档链接-基本上,每个$_POST['whatever']现在都成为一个值数组,而不是实际的标量值。因此,您需要阅读$\u POST['name'][0]以获取第一个名称输入的内容,阅读$\u POST['name'][1]以获取第二个名称输入的内容,依此类推。谢谢,如果我在表单的每一行中为每个输入添加一个$_POST['name'][0,1…],我现在就可以工作了。我想知道是否有一种构造PHP的方法,这样我就不必为每个可能的行添加$u POST['name'][0,1…]。通过这种方式,电子邮件正文将只包含必要数量的行,而不会包含大量多余的空行。我决定将此问题标记为已回答,因为它已得到有效回答,即使根据我的上一条评论,电子邮件的构造方式存在问题。我现在就悬而未决的问题提出了一个具体问题