[英]Dynamically created index fields not being submitted with form
我正在使用jQuery动态地为电子邮件地址创建新字段,该字段由SELECT下拉框指定电子邮件地址的类型和该电子邮件地址的文本输入。
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="you@domain.com" 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:当用户单击“ plus-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();
}));
一切都很好,问题是当我提交表单时,动态创建的字段将被忽略。 提交后,我正在对表单数据进行序列化并显示在警报中以进行验证。 我已经尝试了一切,似乎看不出问题出在哪里! 有任何想法吗?
我想到了...
我上面发布的表单片段只是一个更大的应用程序的一小部分。 该应用程序仍仅在页面上使用一种形式。 不同的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>
现在一切正常。 :/希望这可以帮助其他人不要在同一问题上浪费时间!
抛出<pre><?php var_dump($_POST); ?></pre>
<pre><?php var_dump($_POST); ?></pre>
在handler.php上,看看传递了什么。 当我测试您的示例时,单击加号一次并填写完毕后,就可以在handler.php上找到它:
array(2) {
["email_type_id"]=>
array(2) {
[0]=>
string(2) "10"
[1]=>
string(2) "30"
}
["email_value"]=>
array(2) {
[0]=>
string(14) "you@domain.com"
[1]=>
string(15) "you2@domain.com"
}
}
在发布到handler.php之前,您是否还在对数据做其他事情?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.