molily: autmatisches Löschen von inputs bei Fokus

Beitrag lesen

Hallo,

if(document.getElementById){
if(typeof(document.getElementById('suchfeld'))!='undefined'){

Unsinnige Abfrage. getElementById gibt »null« zurück, wenn kein Element mit der ID suchfeld existiert. Wenn die Methode getElementById nicht funktioniert, erzeugt ein Aufruf einen Fehler.

if (document.getElementById && (suchfeld = document.getElementById('suchfeld'))) {
    suchfeld.onfocus = ...

document.getElementById('suchfeld').onfocus=check('suchfeld', true);

Du musst eine Funktion (Funktionsobjekt) anhand ihres Namens angeben.
elementobjekt.onevent = funktion;
Du darfst die Funktion an dieser Stelle nicht ausführen. Das tust du aber in dem Moment, und die Funktion gibt kein Function-Objekt zurück, also wird keine Event-Handler-Funktion registriert, sondern die Funktion beim versuchten Zuweisen ausgeführt. Du kannst der Event-Handler-Funktion nicht auf diese Weise Parameter übergeben. Es reicht, dass du suchfeld.onfocus = check; notierst und alles weitere in der Funktion regelst. (Es geht auch anders, aber so geht’s auch. ;))

function check(objekt, inout){

Erster Parameter einer Event-Handler-Funktion ist immer das Event-Objekt (außer im MSIE). objekt ist die ID des Elements, bei dem das Ereignis passierte. Die kannst du in der Event-Handler-Funktion über das Event-Objekt abfragen. Das Event-Objekt wird der Funktion wie gesagt als Parameter übergeben, also notierst du z.B. function check (eventobjekt). Im MSIE hingegen kannst du darauf über event bzw. window.event zugreifen. Eine Unterscheidung wie
if (!eventobjekt) eventobjekt = window.event;
sorgt dafür, dass dir in jedem Fall das Eventobjekt in der Variable eventobjekt zur Verfügung steht. Im MSIE greift man über srcElement auf das Elementobjekt zu, bei dem der Event passierte; in anderen Browsern über target. Durch eine solche Unterscheidung hast du auf jeden Fall das Zielelement in der Variable zielelement zur Verfügung:
var zielelement;
if (eventobjekt.srcElement)
  zielelement = eventobjekt.srcElement
else
  zielelement = eventobjekt.target;

if(inout){/*Fokus ist im Eingabefeld*/

Du willst wissen, ob ein focus- oder blur-Event aufgetreten ist. Das steht in eventobjekt.type. Also: if (eventobjekt.type == "focus") ...

if(document.getElementById(objekt).value==document.getElementById(objekt).defaultValue) document.getElementById(objekt).value='';

if (zielelement.value == zielelement.defaultValue)
  zielelement.value = "";

} else{
    if (document.getElementById(objekt).value=='') document.getElementById(objekt).value=document.getElementById(objekt).defaultValue;

if (zielelement.value == "")
  zielelement.value = zielelement.defaultValue;

}
}
else if(document.all){

Das kannst du dir dann sparen.

Mathias