jQuery:添加无限输入和处理表单数据

时间:2012-11-24 20:55:27

标签: jquery html css forms

我有一个联系人数据库表单,用户可以单击加号并添加无限数量的电话输入字段,电子邮件字段,地址字段。我已经从其他问题中找到了解决方法。

现在我需要知道如何处理这些数据。可以无限添加的每个字段具有相同的名称。我在想这些会被添加到一个数组中,我可以在其中使用for或.each并循环遍历它。

最后一件事是我通过jQuery Ajax将这些信息发送到PHP页面,该页面将处理所有数据。我在PHP中比在jQuery中更擅长PHP,但显然jQuery对于不必刷新页面很有用。我的问题是这种不良做法?它看起来有点慢。我知道我可以在js中进行错误检查和处理数据,然后将处理后的数据发送到PHP页面以便在数据库中输入,但我担心用js进行错误检查要困难得多。

4 个答案:

答案 0 :(得分:4)

添加表单元素时,请注意,如果在名称的末尾添加方括号,则发布的数据将被构造为类似数组的对象:

<input type="text" name="extrainput[]"/>

然后,您可以迭代结果并处理用户输入。

因此,例如,如果您需要无限数量的文本框供用户输入其语言,您可以使用:

$('#addbutton').click(function(){
    $('#myform').append('<input type="text" name="languages[]"/>')
});

其中addbutton是用户点击添加其他输入的按钮的ID。

要迭代这些表单元素,您可以使用:

$('[name="languages[]"]').each(...)

答案 1 :(得分:3)

两种方法,在PHP中都有类似的结果

第1行

<input type="text" name="fullname[]" />
<input type="text" name="telephone[]" />

第2行

<input type="text" name="fullname[]" />
<input type="text" name="telephone[]" />

$ _ POST将有一个值数组,其索引显示它们属于哪个行

第1行

<input type="text" name="row[1][fullname]" />
<input type="text" name="row[1][telephone]" />

第2行

<input type="text" name="row[2][fullname]" />
<input type="text" name="row[2][telephone]" />

$ _ POST每行会有一个数组

答案 2 :(得分:0)

你可以简单地使用 jQuery(yourDiv).data('mydata', anyObject); 然后迭代

jQuery(selector of your divs).each(function(item){
    var obj = jQuery(item).data('mydata');
    // do anything you want here
})

答案 3 :(得分:0)

您可以在html中使用数组作为名称:

var i = 0;
$('.add').click(function(){
   var newE = $('<input/>').attr({type:'text',name:'data[]',value:i,'class':'inputs'});
   $('.myform').append(newE).hide().fadeIn('1000');
});

并使用ajax发送:

var data = {};
$.each($('.inputs'),function(i,val){
      data[i] = $(val).val();
});
callajaxfunction(data);  

然后你可以用php获取这个数组:

foreach($_POST['data'] as $key => $value){
   echo $key.':'.$value.'<br>';
}