2016-10-05 5 views
4

Ich habe eine Schaltfläche, die ein Formular in meiner HTML-Seite erscheinen lässt. Ich habe eine Funktion, die die Daten aus Formularen bekommt:Formular kann nicht von einem dynamisch erstellten Formular abgerufen werden

function getFormData($form){ 

    var unindexed_array = $form.serializeArray(); 

    var indexed_array = {}; 

    $.map(unindexed_array, function(n, i){ 

     indexed_array[n['name']] = n['value']; 

    }); 

    return indexed_array; 

}

Die Funktion scheint gut zu arbeiten, weil ich die Daten von anderen Formen erhalten kann, die nicht dynamisch erstellt wurden. Ich erstelle mein Formular auf diese Weise durch Klicken auf eine Schaltfläche:

Ich habe eine andere Schaltfläche, die für das Erhalten der Formulardaten verantwortlich sein soll. Es ruft diese Funktion auf und mitten in der Funktion habe ich folgendes:

Warum passiert das? Ich bin kein erfahrener Programmierer, also sorry für irgendwelche Fehler ...

+2

Sie haben eine Syntax e Fehler. Sie sollten 'new_form.appendChild (input)' verwenden. Überprüfen Sie die Konsole sollte es sagen, dass "append_child" 'ist keine Funktion – synthet1c

+0

@ Synthet1C oh das habe ich nicht gesehen. Es war ein Tippfehler. Ty –

+0

Welches Objekt erhalten Sie von Selektor '$ (" # new_form ")' kurz bevor es an die 'getFormData' Funktion übergeben wird? –

Antwort

1

Haben Sie einen Grund, den Mix aus reinem js und jquery zu verwenden? JQuery Formularerstellung kann Ihnen helfen.

var new_form = $('<form></form>') 
     .attr('id', "new_form") 
     .append('<input type="text" value="1" name="inp" />');  
$('#existent_div').append(new_form); 
console.log($('#new_form').serializeArray()); 

https://jsfiddle.net/yej5xc8s/

aktualisieren

Die Mischung funktioniert auch, wenn Sie eine Eingabe anhängen und definieren existent_div

function getFormData($form){ 
    var unindexed_array = $form.serializeArray(); 
    var indexed_array = {}; 
    $.map(unindexed_array, function(n, i){ 
     indexed_array[n['name']] = n['value']; 
    }); 

    return indexed_array; 
} 

var new_form = document.createElement('form'); 
new_form.id = "new_form"; 
var input = document.createElement('input'); 
input.name = "qwer"; 
input.value = "1"; 
new_form.appendChild(input); 

var existent_div = document.getElementById('existent_div'); 
existent_div.appendChild(new_form); 

console.log(getFormData($("#new_form"))); 

https://jsfiddle.net/yej5xc8s/1/

Verwandte Themen