2010-08-19 14 views
5

Ich habe ein Array von Texteingaben wie folgt holen:Wie Textbox Array-Wert mit Hilfe von Javascript/jquery

<input type="textbox" name="mobileno[]"><br> 
<input type="textbox" name="mobileno[]"><br> 
<input type="textbox" name="mobileno[]"><br> 

Sie entstehen während der Laufzeit unter Verwendung eines „add mehr“ klicken.

Gibt es eine Möglichkeit, ich kann jQuery verwenden, um den Texteingabewert abzurufen und in Ajax-Anforderung zu übergeben?

Ich habe eine Ajax-Anfrage erstellt, aber ich bin nicht in der Lage, den Wert der Texteingabe-Array in Name = Wert-Muster zu holen.

+0

* Textfeld * ist kein korrekter Wert für das Attribut * type *. Sie wollen nur 'type =" text "'. –

+0

Glücklicherweise ist "Text" der Standardtyp, und unbekannte Typen werden normalerweise nur als Standard betrachtet, sodass sie in den meisten Browsern weiterhin zu funktionieren scheint. Aber das ist nur ein glücklicher Zufall. – cHao

Antwort

5

Sie können wie folgt tun:

$('input[name="mobileno[]"]').each(function(){ 
    alert($(this).val()); 
}); 

Die ^= findet Elemente, deren Name beginnt mitmobileno Text und später each wird eine Schleife über alle Elemente verwendet, um ihren Wert zu erhalten.

Mehr Info:

+0

+1 für Schnelligkeit – PHP

+1

Keine Notwendigkeit, die "startet mit Selektor".Es ist absolut zulässig, die eckigen Klammern im Selektor zu verwenden: '$ ('input [name =" mobileno [] "]')' – RoToRa

1

Zunächst einmal: Das ist kein "Array von Textbox [es]". In HTML gibt es kein Array. Es sind nur mehrere Textfelder, die alle denselben Namen haben, und dieser Name hat zufällige eckige Klammern im Namen. Die eckigen Klammern im Namen haben in HTML keine besondere Bedeutung. (PHP braucht sie, aber das ist eine ganz andere Sache).

Zweitens: type="textbox" ist falsch. Es ist nur type="text". Sie haben Glück, dass es funktioniert, weil "text" der Standardwert ist, auf den Browser zurückgreifen, wenn sie einen ungültigen Wert wie textbox finden.

Wenn Sie die vales eines Formulars in dem Standardnamen erhalten müssen = Wertemuster (getrennt mit &) bietet jQuery die serialize Methode für Formulare:

alert($("#your-form-id").serialize()); 

http://api.jquery.com/serialize/

+0

Ich bin mir nicht sicher, ob * serialize() * hier funktionieren würde, weil der Wert von * name * Attribut ist uri-codiert, also wird '[]' zu '% 5B% 5D'. –

+0

Würde das eine Rolle spielen? Ich hätte gedacht, das könnte nur eine gute Sache sein. – RoToRa

+0

Es gibt kein Array in HTML, aber ** in JavaScript **. (Normalerweise, wenn Sie mit 'Arrays' von Elementen arbeiten, haben Sie tatsächlich eine NodeList, aber das macht selten einen großen Unterschied). – Quentin

1

Try this:

var text= new Array(); 
$("input[name='mobileno[]']").each(function(){ 
    text.push($(this).val()); 
}); 

Wenn Sie den variablen Text alarmieren, erhalten Sie den kommagetrennten Ausgang.

1
var data = $('input[name="mobileno[]"]').map(function(){ 
    return this.name + '=' + this.value; 
}).get().join('&'); 
alert(data); 

Dies wird Ihnen etwas wie mobileno[]=value&mobileno[]=value&mobileno[]=value geben. Sie können es dann in Ihrer Ajax-Anfrage übergeben.

Verwandte Themen