我有一个带有几个文本输入的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 []”数据。
任何建议都将不胜感激!
答案 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)
如果您的HTML
是option[<?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());
});