webentwicklung-frage-antwort-db.com.de

So erhalten Sie ein Array mit jQuery, mehrere <Eingabe> mit demselben Namen

Ich habe ein Formular, in dem Benutzer Eingabefelder mit jQuery hinzufügen können.

<input type="text" id="task" name="task[]" />

Nach dem Absenden des Formulars bekomme ich ein Array in PHP.

Ich möchte dies mit der $.ajax() behandeln, aber ich habe keine Ahnung, wie ich meinen <input>s in jQuery in ein Array umwandeln soll.

Danke im Voraus.

59
x4tje

Verwendung von map :

var values = $("input[id='task']")
              .map(function(){return $(this).val();}).get();

Wenn Sie die ID ändern oder entfernen (die eindeutig sein sollte), können Sie auch den Selektor $("input[name='task\\[\\]']") verwenden.

Arbeitsbeispiel: http://jsbin.com/ixeze3

113
Kobi

Bei mehreren Elementen sollten Sie eine Klasse anstelle von ID angeben, z.

<input type="text" class="task" name="task[]" />

Jetzt können Sie diese mit jquery bekommen, etwa so:

$('.task').each(function(){
   alert($(this).val());
});
32
Sarfraz

Erstens sollten Sie nicht mehrere Elemente mit derselben ID auf einer Seite haben - die ID sollte eindeutig sein.

Sie können einfach das id-Attribut entfernen und durch Folgendes ersetzen:

<input type='text' name='task'>

und um ein Array der Werte von task zu erhalten

var taskArray = new Array();
$("input[name=task]").each(function() {
   taskArray.Push($(this).val());
});
15
Dal Hundal

Um das Namensarray abzufangen, verwende ich das

$("input[name*='task']")
9
fxs

Sie können dieselbe ID nicht für mehrere Elemente in einem Dokument verwenden. Behalten Sie die IDs unterschiedlich und benennen Sie die Elemente.

<input type="text" id="task1" name="task" />
<input type="text" id="task2" name="task" />
<input type="text" id="task3" name="task" />
<input type="text" id="task4" name="task" />
<input type="text" id="task5" name="task" />

var newArray = new Array();

$("input:text[name=task]").each(function(){
    newArray.Push($(this));
});
6
rahul

HTML:

<input type="text" name="task[]" class="form-control" id="task">

JS:

var tasks= new Array();
$('input[name^="task"]').each(function() 
{
tasks.Push($(this).val());
});
1
Antonio Reyes

wenn Sie möchten, dass der Selektor dieselbe ID erhält, verwenden Sie :

$("[id=task]:eq(0)").val();
$("[id=task]:eq(1)").val();
etc...
0
wade

Sie können hierzu jquery.serializeJSON verwenden.

0