Javascript / JQuery在数组中保存表单字段

时间:2013-11-10 11:10:52

标签: javascript jquery arrays

我有一个带有几个文本输入的from,如下所示:

<input name="option[][<?php echo $cmd1; ?>]" type="text">
<input name="option[][<?php echo $cmd2; ?>]" type="text">
<input name="option[][<?php echo $cmd3; ?>]" type="text">
<input name="option[][<?php echo $cmd4; ?>]" type="text">
[..]

每次都有不确定的输入量。

提交表单时,我想将“option []”的值保存到javascript数组中(我使用的是AJAX,因此不会删除数组的状态)。

我尝试在我的AJAX请求中使用$('form').serializeArray()来实现此目的,但我不确定如何只访问“option []”数据。

任何建议都将不胜感激!

4 个答案:

答案 0 :(得分:1)

虽然您已经接受了答案,但值得指出(假设您在适当的时间执行此操作,或遵循相应的事件),这可以通过两种相对简单的方式完成。

使用jQuery:

var options = $('input[name^="option"]').map(function(){ return this.value; }).get();

或使用纯JavaScript(现代浏览器):

var options = [].map.call[document.querySelectorAll('input[name^="option"]'), function(a){
    return this.value;
});

答案 1 :(得分:0)

如果您的HTMLoption[<?php echo $cmd1; ?>]而不是option[][<?php echo $cmd1; ?>],那该怎么办?

<input name="option[<?php echo $cmd1; ?>]" type="text">
<input name="option[<?php echo $cmd2; ?>]" type="text">
<input name="option[<?php echo $cmd3; ?>]" type="text">
<input name="option[<?php echo $cmd4; ?>]" type="text">

答案 2 :(得分:0)

使用.push()
.push()是一个在数组末尾添加元素并分别扩展数组的函数。 http://learn.jquery.com/javascript-101/arrays/

var myarray = []; //  new Array()
myarray.push($("#inputid").val());

将所有输入值(在您的表单中)推送到数组

var myarray = [];
$('#form').find(':input').each(function(){
  myarray.push($(this).val());
});

答案 3 :(得分:0)

只需使用类,如下所示:

<input class="option" name="option[<?php echo $cmd1; ?>]" type="text">
<input class="option" name="option[<?php echo $cmd2; ?>]" type="text">

var options = [];
$('.option').each(function(){
  options.push($(this).val());
});

或直接与name属性匹配:

<input name="option[<?php echo $cmd1; ?>]" type="text">
<input name="option[<?php echo $cmd2; ?>]" type="text">

var options = [];
$("input[name*='option']").each(function(){
  options.push($(this).val());
});