通过jQuery添加更多(组)字段以形成

时间:2012-02-09 02:23:28

标签: php javascript jquery html forms

通过jQuery向html表单添加更多字段很容易。然后,我们可以序列化字段,如果它们具有相同的name但是如果我们有一组字段呢?例如

<input type="text" name="movie1_name" />
<input type="text" name="movie1_director" />
<input type="text" name="movie1_year" />

现在我想通过jQuery添加一组新的字段

<input type="text" name="movie2_name" />
<input type="text" name="movie2_director" />
<input type="text" name="movie2_year" />

等等。我用PHP处理表单,用三列(名称,导演,年份)将电影插入到mysql数据库中。在上面提到的示例中,很难序列化字段以创建适当的$ _POST数组。我应该如何序列化jquery添加的电影集?

3 个答案:

答案 0 :(得分:3)

<input type="text" name="movie_name[]" />
<input type="text" name="movie_director[]" />
<input type="text" name="movie_year[]" />

<input type="text" name="movie_name[]" />
<input type="text" name="movie_director[]" />
<input type="text" name="movie_year[]" />

没有别的。在服务器上,你将得到(在POST情况下)数组$ _POST ['movie_name'],$ _POST ['movie_director']和$ _POST ['movie_year'];。具有相同索引的元素来自同一组输入。

你有什么类型的序列化问题?

<form>   
<input type="text" name="movie_name[]" />
<input type="text" name="movie_director[]" />
<input type="text" name="movie_year[]" />
<hr />
<input type="text" name="movie_name[]" />
<input type="text" name="movie_director[]" />
<input type="text" name="movie_year[]" />
 <br />
<input type='button' id='serialize' value='Click me' />
</form>

和js代码:

$('#serialize').click(function(){
    alert($('form').serialize()); 
});

当你想提交数据时只需写

 $.post('script.php', $('form').serialize(), function() {alert('Saved');}); 

ps:如果你害怕丢失一些东西,只需比较count($ _ POST ['movie_name']),count($ _ POST ['movie_director'])和count($ _ POST ['movie_year'])。

或者您可以添加索引

   <input type="text" name="movie_name[0]" />
   <input type="text" name="movie_director[0]" />
   <input type="text" name="movie_year[0]" />

   <input type="text" name="movie_name[1]" />
   <input type="text" name="movie_director[1]" />
   <input type="text" name="movie_year[1]" />

答案 1 :(得分:1)

根据与Cheery的有用讨论,我得出结论,最好和最安全的方法是使用

<input type="text" name="movie_name[i]" />
<input type="text" name="movie_director[i]" />
<input type="text" name="movie_year[i]" />

我们使用jQuery定义每个i以便SAFELY序列化字段。这样,我们可以确定序列化数组是并行且匹配良好的,而不会错位。

答案 2 :(得分:0)

您可以这样做:

<input type="text" name="movie1_name" />
<input type="text" name="movie1_director" />
<input type="text" name="movie1_year" />
// OTHER:
<input type="text" name="movie2_name" />
<input type="text" name="movie2_director" />
<input type="text" name="movie2_year" />

对所有人这样做...在Jquery中,你创建了一个根据需要创建字段的函数...我不是JQuery中最好的,所以我无法帮助你,但我告诉你的工作方式PHP很适合我...