我正在使用一种在表单上克隆行的简单方法。您可以看到网页here。
这是我用来进行克隆的脚本:
$(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 =“预订退房”; $名称 =修剪(stripslashes($ _ POST ['name'])); $ Email = TRIM(的stripslashes($ _ POST [ '电子邮件'])); $ Telephone = 修剪(的stripslashes($ _ POST [ '电话']));
$ validationOK = TRUE;如果 (!$ validationOK){print“”;出口; }
$ Body =“已经进行了新的预订 撤退如下:“; $ Body。= “\ n” 个; $ Body。=“\ n”; $ Body。=“name: “; $ Body。= $ Name; $ Body。=”\ n“; $ Body。=“\ n”; $ Body。=“email:”; $ Body。= $ Email; $ Body。=“\ n”; $身体 。=“\ n”; $ Body。=“电话:”; $身体 。= $电话; $ Body。=“\ n”;
$ success = mail($ EmailTo,$ Subject, $ Body,“From:”);
if($ success){print“”; } else {print“”; }?&gt;
我所看到的是,只有表单中的最后一行被添加到电子邮件中,大概是因为每个文本框都没有唯一的名称或ID。所以我再次想知道克隆方法是否最适合这个任务,如果是,我如何改变我的代码以包含电子邮件中的所有行。
谢谢,
尼克
答案 0 :(得分:0)
要使用PHP,您需要将输入转换为'数组',方法是将2个字符的序列'[]'附加到输入名称的末尾(有关更多信息,请参阅http://php.net/faq.html上的#3}细节)。
至于使用值克隆对象,清除最新添加的输入中的值作为$(“。add”)的'click'处理程序的最后一步应该非常简单。
$(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();
});
});