2016-04-26 7 views
0

Heute habe ich ein Problem. Ich habe ein HTML-Formular, das eine dynamische Anzahl von HTML-Eingabefeldern für eine EMail-Adresse haben kann. Über Javascript möchte ich diese Daten bewerten und über XMLHttpRequest veröffentlichen.Javascript: Ist Objekt ein Array von Elementen

Ich hole die Eingabefelder wie folgt aus:

var elements = document.getElementById("emailmodal").elements["multiple[]"]; 

Dann habe ich überprüfen möchten, wenn es ein Array ist, denn wenn ich nur ein Eingabefeld Elemente haben nicht eine Reihe von Elementen enthalten, aber nur ein Element:

if(jQuery.isArray(elements)) 
{ 

    for(var i = 0; i < elements.length; i++) 
    { 

     formData.append("emailreceiver[]", elements[i].value); 

    } 

}else 
{ 

    formData.append("emailreceiver[]", elements.value); 

} 

Im Fall ist es ein Array, wird es durch die Elemente über For-Schleife, und wenn nicht, seine unmittelbar den Wert nehmen.

Dies funktioniert jedoch nicht richtig. Selbst wenn ich mehrere Eingänge habe, sagt mir das Skript, es ist kein Array.

die entsprechende HTML ist

<div class="form-group input-group"> 
 
<input type="text" name="multiple[]" class="form-control" value="<?php echo $kundendaten['Email']; ?>"> 
 
<span class="input-group-btn"><button type="button" class="btn btn-default btn-add">+</button></span> 
 
</div>

Das von Bootstrap ist.

Wenn ich log machen var zu trösten, und ich habe mehr als ein Element, als es so aussieht: enter image description here

Wenn ich var log machen und haben nur ein Element es wie dieses

enter image description here

sieht

Was kann ich tun?

Cheers, Niklas

+0

Post html auch .. –

+0

Ja Objekt ist auch eine Anordnung von Elementen in JS, weil Javascript unterstützt keine assoziativen Arrays. –

+2

DOM-Element hat keine "Element" -Methode. Können Sie die Ausgabe von Elementen teilen? – gurvinder372

Antwort

2

Dank Mmcgowa !!

Dies funktioniert. Wenn elements kein Array ist, ist element.length undefined!

0

Ich weiß, dass Sie bereits eine Lösung haben, aber warum Sie nicht Ihren Code Fluss vereinfachen und wie folgt vorgehen:

if (elements.length == 1) elements = [elements]; 

// now you know that if *elements* is not empty, it is always an array 
for (var i = 0; i < elements.length; i++) 
{ 
    formData.append("emailreceiver[]", elements[i].value); 
} 
Verwandte Themen