#1 13. August 2007 ajax: generierte elemente nicht klickbar so mädels, nun bin ich mal dran mit ausweinen ich bastel gerade an einer seite, die recht viel mit ajax macht, und stoße dabei auf was sehr merkwürdiges. folgender quellcode (ajaxtest.php): PHP: <? php if(isset( $_GET [ 'param' ])) { echo "<button type=\"button\" onClick=\"alert('gedrückt');\">" . $_GET [ 'param' ] . "</button><br />\n" ; } else { ?> <html> <head> <title>Ajax-Test</title> <script type="text/javascript"> var http_request = false; function ajaxCall(param){ http_request = false; if (window.XMLHttpRequest) { // Mozilla, Safari,... http_request = new XMLHttpRequest(); if (http_request.overrideMimeType) { http_request.overrideMimeType('text/xml'); // zu dieser Zeile siehe weiter unten } } else if (window.ActiveXObject) { // IE try { http_request = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { http_request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } if (!http_request) { alert('Ende :( Kann keine XMLHTTP-Instanz erzeugen'); return false; } http_request.onreadystatechange = ajaxCallback; http_request.open('GET', 'ajaxtest.php?param='+param, true); http_request.send(null); } function ajaxCallback() { if (http_request.readyState == 4) { var answer = http_request.responseText; document.getElementById("filter_test_results").innerHTML = answer; } } </script> </head> <body> <h2>Ajax-Test</h2> <table> <tr> <td>was eingeben</td> <td> <input id="input_text" type="text" name="input_text" size="30" maxlength="40" onKeyUp="ajaxCall(this.value);" onChange="ajaxCall(this.value);" /> </td> </tr> </table> <div id="filter_test_results"> hier kommt gleich was </div> </body> </html> <?php } ?> hintergrund: das teil funzt so ähnlich wie ein telefonbuch. ich gebe eine nummer ein, es werden per ajax gefilterte daten angefordert und ausgegeben. mit einem klick auf den/die generierten knopf/knöpfe gehts weiter. das lustige: die vom skript generierten elemente (ich hab anchors, buttons, inputs type=radio ausprobiert) reagieren erst beim 2. klick. irgendwie wird der focus innerhalb des documents falsch gesetzt. ich habs mit ner kleinen, selbstgebauten hackfunktion versucht (focus erst auf document, dann wieder aufs input-feld setzen), die tut ihren dienst aber nicht ganz. also... woran liegt's? p.s.: unvollständigkeiten im code sind versehentlich, im großen und ganzen sieht das teil deutlich sauberer aus. + Multi-Zitat Zitieren
#2 13. August 2007 AW: ajax: generierte elemente nicht klickbar Also ich sehe nichts verwerfliches und habe dieses Problem so noch nie feststellen können, ich habe jedoch eine Vermutung und zwar den MIME - Type des XML. Normalerweise ist der Inhalt der XML - Response nicht so einfach auszulesen und bei Manchen Browser auch Abhängig von der Validität des XML. Ich würde dir empfehlen, den Content-Type nicht zu überschreiben und es dann nochmal zu probieren! Solltest du wirklich konkretes XML als Response brauchen, dann schau dir nochmal den Workaround von selfhtml bzgl. AJAX - Tooltips an (Google hilft) oder versuch aus dem "einfachen" responseText ein DOM zu generieren! + Multi-Zitat Zitieren
#3 14. August 2007 AW: ajax: generierte elemente nicht klickbar versuch mal: PHP: echo "<input type=\"button\" onClick=\"alert('gedrückt');\" value=\" { $_GET [ 'param' ] } \" /><br />\n" ; ansonsten kann es evt auch noch am doctype liegen. wenn du nen text anforderst aber den header auf text/xml setzt kommt es zu fehlern (schau mal in der fehlerconsole), das kann es auch sein. bzw makenx zustimm + Multi-Zitat Zitieren
#4 15. August 2007 AW: ajax: generierte elemente nicht klickbar hm, alles falsch das problem ist "onchange". der triggert nämlich, wenn das input-feld per mausklick verlassen wird (also auch, wenn der mausklick auf den button erfolgt). dann wird der button neu erzeugt und der klick kann nicht mehr dem button zugeordnet werden. komische sache, ist aber so... + Multi-Zitat Zitieren
#5 16. August 2007 AW: ajax: generierte elemente nicht klickbar O Mann, boing, auf die events hab ich gar nicht gedacht. So kann man sich irren, wundern tu ich mich trotzdem dass der dir so cross-browser technisch zugriff auf den xml knoten gewährt....mh mal testen vielleicht mache ich mir das sogar immer zu kompliziert. + Multi-Zitat Zitieren