 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
10.04.2008, 15:03
|
#1
|
|
TP-Insider
Registriert seit: Nov 2004
Ort: Ulm
|
Ajax/Javascript - nachträglich hinzugefügte Elemente eines Formulars werden ignoriert
Folgendes Szenario:
Ich habe ein Formular, das bei Änderung einer Select-Box weitere Input-Felder (per Ajax) hinzufügt. Anschließend soll das komplett ausgefüllte Formular (inkl. der neuen Felder) abgeschickt werden. Dies scheitert aber daran, daß die neuen Felder nicht mitübertragen werden.
Als Basis Konstrukt nehme ich die Mootools-Bibliothek und stütze mich hierbei in erster Linie auf folgendes Beispiel: http://demos.mootools.net/Ajax.Form
Wird:
Code:
window.addEvent('domready', function(){
nur beim ersten Laden der Seite ausgeführt und später bei Änderung nicht neu aufgerufen, oder woran könnte es noch liegen, daß die neuen Felder ignoriert werden?
__________________
"Quis custodiet ipsos custodos?" Juvenal
Die archaische Kultur von Minos hat dem Minotaurus alljährlich ihre Kinder geopfert, um Sicherheit zu gewinnen. Eine demokratische Kultur, die ihre Prinzipien dem Terrorismus in den Rachen wirft, handelt nicht anders. H. Prantl in NZZ Folio 09/07
Webseiten & Datenschutz - eine kurze Zusammenfassung
|
|
|
11.04.2008, 09:58
|
#2
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
nach jedem Request musst Du erneut Deine handler starten, damit die neuen Elemente erfasst werden.
|
|
|
12.04.2008, 11:01
|
#3
|
|
TP-Insider
Registriert seit: Nov 2004
Ort: Ulm
|
Ah ok, danke, sowas in der Art dachte ich mir auch schon, da ich von JavaScript aber nicht wirklich viel Ahnung habe, habe ich keine Ahnung, wie ich das machen soll.
Ich habe mal eine Demo-Seite meines Problems erstellt:
http://njimko.de/test/test2.php
Wenn man in der Dropbox einen Eintrag auswählt (am Besten "neue Frage" oder "Was ist Datenschutz") werden weitere Felder angezeigt (und ein paar Infos zum Debuggen). Wenn ich danach das Formular nochmals abschicke, wird es "normal" versendet.
Wie genau starte ich jetzt die Handler neu?
__________________
"Quis custodiet ipsos custodos?" Juvenal
Die archaische Kultur von Minos hat dem Minotaurus alljährlich ihre Kinder geopfert, um Sicherheit zu gewinnen. Eine demokratische Kultur, die ihre Prinzipien dem Terrorismus in den Rachen wirft, handelt nicht anders. H. Prantl in NZZ Folio 09/07
Webseiten & Datenschutz - eine kurze Zusammenfassung
|
|
|
12.04.2008, 12:36
|
#4
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
pack erinfach den Handler in eine eigene Funktion, in der Art
Code:
window.addEvent('domready', function(){
initHandler();
});
function initHandler() {
$('fragenForm').addEvent('submit', function(e) {
/**
* Prevent the submit event
*/
new Event(e).stop();
/**
* This empties the log and shows the spinning indicator
*/
var log = $('allItems').empty().addClass('ajax-loading');
/**
* send takes care of encoding and returns the Ajax instance.
* onComplete removes the spinner from the log.
*/
this.send({
update: log,
onComplete: function() {
log.removeClass('ajax-loading');
}
});
});
}
function sendform() {
var log = $('allItems').empty().addClass('ajax-loading');
$('fragenForm').send({
update: log,
onComplete: function() {
initHandler();
log.removeClass('ajax-loading');
}
});
};
|
|
|
12.04.2008, 19:09
|
#5
|
|
TP-Insider
Registriert seit: Nov 2004
Ort: Ulm
|
Nochmals vielen Dank für Deine Hilfe! Habe das jetzt so implementiert, der Ajax-Vorgang klappt jetzt auch jedes Mal, aber die neu eingefügten Input-Felder (bzw. deren Inhalte) fallen immer noch unter den Tisch (Testseite wurde aktualisiert, siehe Link weiter oben), aber die neu hinzugefügten Felder werden leider immer noch nicht übertragen.
Hast Du evtl. noch eine Idee, woran es liegen könnte?
__________________
"Quis custodiet ipsos custodos?" Juvenal
Die archaische Kultur von Minos hat dem Minotaurus alljährlich ihre Kinder geopfert, um Sicherheit zu gewinnen. Eine demokratische Kultur, die ihre Prinzipien dem Terrorismus in den Rachen wirft, handelt nicht anders. H. Prantl in NZZ Folio 09/07
Webseiten & Datenschutz - eine kurze Zusammenfassung
|
|
|
12.04.2008, 20:13
|
#6
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
ich würde es mal einfacher machen, setz die inputs von Anfang an mit rein und blende sie aus, nach dem Request kannst Du sie einblenden.
Sollte das nicht gehen, so musst Du Deinen Request bearbeiten, z.B. mit evalResponse, siehe http://docs.mootools.net/Remote/Ajax.js
|
|
|
13.04.2008, 00:43
|
#7
|
|
TP-Insider
Registriert seit: Nov 2004
Ort: Ulm
|
Autsch! Manchmal sieht man den Wald vor lauter Bäumen nicht.
Vielen Dank!
__________________
"Quis custodiet ipsos custodos?" Juvenal
Die archaische Kultur von Minos hat dem Minotaurus alljährlich ihre Kinder geopfert, um Sicherheit zu gewinnen. Eine demokratische Kultur, die ihre Prinzipien dem Terrorismus in den Rachen wirft, handelt nicht anders. H. Prantl in NZZ Folio 09/07
Webseiten & Datenschutz - eine kurze Zusammenfassung
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 23:44 Uhr.
|
 |