0

我有几个文本输入,如下所示:

<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,因此数组的状态不会被删除)。

我试图$('form').serializeArray()在我的 AJAX 请求中实现这一点,但我不确定如何只访问“option []”数据。

任何建议将不胜感激!

4

4 回答 4

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;
});
于 2013-11-10T18:27:18.177 回答
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">
于 2013-11-10T11:17:35.897 回答
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());
});
于 2013-11-10T11:28:39.323 回答
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());
});
于 2013-11-10T11:38:52.763 回答