2012-02-11 55 views
2

我使用jQuery为包含SELECT下拉框的电子邮件地址动态创建新字段,以指定电子邮件地址的类型和电子邮件地址的文本INPUT。动态创建的索引字段未提交表格

HTML

<form enctype="multipart/form-data" action="handler.php" method="post" /> 
<ul class="ul-lov"> 
<li> 
    <select name="email_type_id[]" class="float-l edit-email-type"> 
     <option value="1">No Label</option> 
     <option value="5">Email</option> 
     <option value="10" selected="selected">Personal</option> 
     <option value="20">Work</option> 
     <option value="30">Other</option> 
    </select> 
    <input type="text" name="email_value[]" value="[email protected]" class="float-l edit-email"> 
    <img src="/gui/minus-button.png" class="minus"> 
    <img src="/gui/plus-button.png" class="addlov"> 
</li> 
</ul> 
</form> 

的jQuery: 当用户点击 “加button.png”,它会运行下面的代码。本质上它只是创建当前LI的副本并去除值。

// Click plus 
$('.addlov').live('click', (function() {   
    $(this).closest('ul').append(
     $(this).parent('li').clone(true).children('input, select').val('').end() 
    ); 
    $(this).remove(); 
})); 

这一切都很好,问题是,当我提交表单时,动态创建的字段将被忽略。提交时,我将序列化表单数据并显示在警报中以验证这一点。我试过了一切,似乎无法看出问题所在!?有任何想法吗?

回答

1

我想通了......

的表单代码我张贴以上是一个更大的应用程序的一小部分。该应用程序仍然只使用页面上的一个表单。不同的div中有很多表单元素。它不工作的原因是因为我的FORM标签不在所有的div之外。

这里是我的代码是如何建立一个例子:

<div id="topform"> 
    <form action="handler.php" method="post"> 
    // some form items 
</div> 
<div id="moreformstuff"> 
    // some form items 
</div> 
<div id="bottomformstuff"> 
    // some form items 
    </form> 
</div> 

所以,我提出我的标签周围像这样:

<form action="handler.php" method="post"> 
<div id="topform">   
    // some form items 
</div> 
<div id="moreformstuff"> 
    // some form items 
</div> 
<div id="bottomformstuff"> 
    // some form items 
</div> 
</form> 

而现在一切工作正常。 :/希望这有助于别人不要浪费时间来解决同一问题!

0

在handler.php上抛出<pre><?php var_dump($_POST); ?></pre>并查看传递的内容。当我测试出你的榜样,点击加号一次,填写出来后,我得到这个在handler.php:

array(2) { 
    ["email_type_id"]=> 
    array(2) { 
    [0]=> 
    string(2) "10" 
    [1]=> 
    string(2) "30" 
    } 
    ["email_value"]=> 
    array(2) { 
    [0]=> 
    string(14) "[email protected]" 
    [1]=> 
    string(15) "[email protected]" 
    } 
} 

你发布到handler.php之前做其他事情的数据?

+0

是的,这是事情,它不久前工作。我发布的这篇文章只是大型应用程序的一小部分。但我似乎无法弄清楚是什么导致它停止工作,因为自上次工作以来我没有做太多工作。感谢您的验证。 – awaldron 2012-02-12 00:33:02