Per JavaScript auf AJAX-generierte Elemente zugreifen?
Verfasst: 27.10.2009, 13:12
Guten Tag.
Da gibt es ein Formular mit AJAX-Elementen für die Postleitzahlen und Orte. Je nach Postleitzahl wird ein <select> mit einer passenden Ortsauswahl erzeugt.
Sooo... Nun soll ein Captcha noch dazu und da braucht man dann einen Durchgang des Formulars durch PHP. Dabei sollen die Formulareingaben überprüft, richtige Eingaben behalten und falsche bzw. fehlende Eingaben angemeckert werden..
Das ganze sieht dann in PHP etwa so aus:
Ich erhalte die Fehlermeldung "document.form1.Ort is undefined". Tatsächlich taucht das Ort-Element im ursprünglichen Quelltext nicht auf. In der durch AJAX modifizierten Form des Formulars gibt es aber sehr wohl ein Ort-Element. Beispielhafter HTML-Quelltext:
Wieso erhalte ich die Fehlermeldung "document.form1.Ort is undefined" ?
Da gibt es ein Formular mit AJAX-Elementen für die Postleitzahlen und Orte. Je nach Postleitzahl wird ein <select> mit einer passenden Ortsauswahl erzeugt.
Sooo... Nun soll ein Captcha noch dazu und da braucht man dann einen Durchgang des Formulars durch PHP. Dabei sollen die Formulareingaben überprüft, richtige Eingaben behalten und falsche bzw. fehlende Eingaben angemeckert werden..
Das ganze sieht dann in PHP etwa so aus:
Code: Alles auswählen
...
<form id="form1" name="form1" action="" method="post">
<div style="float:left; margin-right:10px">
<label id="Anrede">Anrede:</label>
<br />
<select name="Anrede" id="Anrede">
<option value="0" selected="selected">Auswahl</option>
<option value="Herr" <? /* PHP-Zeugs */ ?>>Herr</option>
<option value="Frau" <? /* PHP-Zeugs */ ?>>Frau</option>
<option value="Firma" <? /* PHP-Zeugs */ ?>>Firma</option>
</select>
</div>
// ...usw. etc. Es folgen noch viele Formularelemente...
// Hier nun das AJAX-generierte Element:
<?php
if ($_POST[Ort]!="")
{
echo "
<script type=\"text/JavaScript\">
$.ajax({ // AJAX Request auslösen
type: \"GET\",
url: '/kunde/ajax_proxy.php?function=get_ort_select&Plz='+$_POST[Plz],
dataType: 'html',
global: 'false',
success: function(html) { // Funktion um die XML Antwort des PHP-Scripts zu verarbeiten
$(\"#ortselect\").show();
$(\"#ajaxloading\").hide();
if ( html != '' ) {
$(\"#ortselect\").html(html);
}
else {
$(\"#ortselect\").html(' Keine Orte gefunden!');
}
},
error: function(html) { // Funktion um die XML Antwort des PHP-Scripts zu verarbeiten
$(\"#ajaxloading\").hide();
$(\"#ortselect\").hide();
$(\"#ortselect\").html('Fehler!');
}
});
// Hier der Teil, der nicht funktioniert:
document.form1.Ort.selectedIndex=1;
</script>
";
Code: Alles auswählen
...
// Durch AJAX generiert:
<div id="ortselect" style="float: left; padding-left: 5px;">
<select name="Ort" id="Ort" class="check">
<option value="0">Bitte Ort wählen</option>
<option value="Hamburg">20099 'Hamburg'</option>
</select>
</div>
...