Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 克隆表单中的行的函数存在两个问题_Php_Javascript_Forms_Clone - Fatal编程技术网

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…]。通过这种方式,电子邮件正文将只包含必要数量的行,而不会包含大量多余的空行。我决定将此问题标记为已回答,因为它已得到有效回答,即使根据我的上一条评论,电子邮件的构造方式存在问题。我现在就悬而未决的问题提出了一个具体问题