Javascript / JQuery сохранить поля формы в массиве

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 []".

Любые предложения будут ценны!

  • 0
    какой результат вы ожидаете? массив, содержащий все входные значения (с option name)?
Теги:
arrays

4 ответа

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());
});
  • 0
    Спасибо за предложение, но, как я уже сказал в своем вопросе, у меня есть неопределенное количество входных данных, поэтому я не могу назначить им идентификаторы.
  • 0
    используйте идентификатор только для вашей формы (см. второй код)
Показать ещё 3 комментария
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;
});
0

Что делать, если ваш 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">
  • 0
    Привет, я изменил код на то, что вы предложили, теперь, как я могу получить доступ к массиву опций при отправке формы?
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());
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню