У меня есть с несколькими текстовыми вводами:
<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 []".
Любые предложения будут ценны!
Использовать .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());
});
Хотя вы уже приняли ответ, стоит отметить, что (если вы выполните это действие в соответствующее время или после соответствующего события), это можно сделать двумя относительно простыми способами.
С помощью 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;
});
Что делать, если ваш HTML
является option[<?php echo $cmd1;?>]
option[<?php echo $cmd1;?>]
вместо 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">
Просто используйте классы, например:
<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());
});
option
name)?