有关克隆表单中的行的函数的两个问题

时间:2011-05-15 09:17:58

标签: php javascript forms clone

我正在使用一种在表单上克隆行的简单方法。您可以看到网页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>

我有两个问题,这让我想知道克隆是否是最好的方法:

  1. 如果用户已经在文本框中输入了信息,那么这些信息将与文本框一起克隆,我不希望这种情况发生。我想添加添加为空的行。

  2. 使用PHP将信息提交到电子邮件地址。这是PHP:

  3.   

         

    $ 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。所以我再次想知道克隆方法是否最适合这个任务,如果是,我如何改变我的代码以包含电子邮件中的所有行。

    谢谢,

    尼克

1 个答案:

答案 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();
        });

    });