molily: Einbinden einer Abfrage

Beitrag lesen

Hallo,

gemischter HTML- JavaScript- und PHP-Code lässt sich immer schwer ausprobieren, daher lässt sich dein Problem nicht auf Anhieb nachvollziehen. Am besten stellst du ein Beispiel online und erklärst daran das gegenwärtige sowie das gewünschte Verhalten.

Ansonsten sieht dein Code vom Aufbau her in Ordnung aus, es gibt nur einige offensichtliche Fehler.

$("#title").oncheck('if (this.value=='') this.value='<?php if($do!='edit') { echo $LANG['adm_btitle']; } else { echo $banner_title; } ?>');

jQuery kennt keine oncheck-Funktion. Was genau hast du hier vor? Wann soll dieser Code ausgeführt werden?

Für das Debugging von JavaScript ist es hilfreich, öfters in die JavaScript-Fehlerkonsole des Browsers schauen – der Browser meldet wahrscheinlich in dieser Zeile einen Fehler, weil die oncheck-Methode nicht existiert (»undefined is not a function«).

$("#link").click(update);
$("#img").click(update);

Bist du dir sicher, dass du hier das click-Ereignis meinst? Soll die Preview beim ersten Klick auf das Feld erscheinen, selbst wenn es noch leer ist?

Sinnvoller wäre es doch, die Preview anzuzeigen, wenn das Feld verlassen wird oder ausdrücklich ein Button geklickt wird. (Sofern ich dein Problem richtig verstanden habe.)

<input name="title" type="text"  class="click" id="title" size="120" maxlength="128" onblur="if (this.value=='') this.value='<?php if($do!='edit') { echo $LANG['adm_btitle']; } else { echo $banner_title; } ?>'" onfocus="if (this.value=='<?php if($do!='edit') { echo $LANG['adm_btitle']; } else { echo $banner_title; } ?>') this.value='';" value="<?php if($do!='edit') {} else { echo $banner_title; } ?>" />

Nur als Hinweis:

Hier zeigt sich, wie schlecht lesbar der Code wird, wenn PHP in JavaScript in HTML verschachtelt wird. Langfristig ist es besser, das JavaScript aus dem HTML auszulagern und die Event-Handler mit JavaScript zu registrieren. Dafür eignet sich jQuery hervorragend.

PHP muss dem JavaScript natürlich gewisse Daten bereitstellen. Dies sollte an einer zentralen Stelle geschehen, z.B. indem per PHP ein JavaScript-Konfigurationsobjekt erzeugt oder die Daten im HTML in normalen Attributen oder sogenannten data-Attributen speichert.

Im obigen Fall kannst du doch einfach das value-Attribut füllen, oder? Über die http://de.selfhtml.org/javascript/objekte/elements.htm#default_value@title=defaultValue-Eigenschaft lässt sich im JavaScript der ursprüngliche Wert auslesen.

Grüße,
Mathias