AnubisVoice: Einbinden einer Abfrage

Guten Tag

Ich habe folgendes Problem und leider schon einige gescheiterte Versuche.

$(document).ready(function(){  
$('#preview').hide();  
$("#title").oncheck('if (this.value=='') this.value='<?php if($do!='edit') { echo $LANG['adm_btitle']; } else { echo $banner_title; } ?>');  
$("#link").click(update);  
$("#img").click(update);  
});  
  
function update(){  
  
  
$('#preview').slideDown('slow');  
var title = $("#title").val();  
var link = $("#link").val();  
var img = $("#img").val();  
$('#Displaytitle').html(title);  
$('#Adress').html('<a href="'+link+'" target="_blank">'+link+'<a>');  
$('#Picture').html('<img style="width:20%;height:20%;" src="'+img+'"/>');  
}

dieses Jacascript verwende ich.

<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; } ?>" />  
<input name="link" type="text" class="click" id="link" size="120" maxlength="128" onblur="if (this.value=='') this.value='<?php if($do!='edit') { echo $LANG['adm_blink']; } else { echo $banner_link; } ?>'" onfocus="if (this.value=='<?php if($do!='edit') { echo $LANG['adm_blink']; } else { echo $banner_link; } ?>') this.value='';" value="<?php if($do!='edit') {} else { echo $banner_link; } ?>" />  
<input name="img" type="text" class="click" id="img" size="120" maxlength="128" onblur="if (this.value=='') this.value='<?php if($do!='edit') { echo $LANG['adm_bimg']; } else { echo $banner_img; } ?>'" onfocus="if (this.value=='<?php if($do!='edit') { echo $LANG['adm_bimg']; } else { echo $banner_img; } ?>') this.value='';" value="<?php if($do!='edit') {} else { echo $banner_img; } ?>" /> 

das sind die Formularfelder, meine Idee/Wunsch ist es das, das Javascript das onblur und das onfocus mit ausführt und ebenso das die prewiew die value funktion übernimmt, das wenn die Daten aus der Datenbank geholt werden automatisch in der Vorschau erscheinen.

    <div class="preview">  
        <table class="show">  
          <tr>  
            <td>  
              Gewählter Name des Banners:  
             </td>  
            <td  class="fc" id="Displaytitle">  
              </td>  
            </tr>  
          <tr>  
            <td>  
              Gewählte URL des Hyperlinks:  
            </td>  
            <td class="fc" id="Adress">  
              </td>  
            </tr>  
          <tr>  
            <td>  
              Gewählter Banner::  
            </td>  
            <td class="fc" id="Picture">  
              </td>  
            </tr>  
          </table>  
  </div>
  1. 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

    1. Hallo Mathias

      Ich habe jetzt mal den Link zu meiner Seite reingestellt, ich hoffe es ist kein Problem das man sich registrieren muss(ohne E-Mail Antwort, extra abgstellt mit du den gesamten Code sehen kannst) der Code selber 3 Scripts ist in dem Forum gepostet, weil er hier zuviel Platz einnehmen würde. Solltest du oder einer der anderen guten Helfer sich auf der Seite regestrieren und anwesend sein, so kann ich auch dann den Zugang zur Funktion des Scriptes geben(Adminbereich).

      award5.org

      Ich hoffe es ist so in Ordnung.