benni: formularfeld mittels einer funktion leeren

hi!

also ich hab ein formular gebastelt, in dem in den feldern schon etwas drinsteht

(<input type="text" name="name" value="Ihr Name">)

wenn man mit der maus draufklickt (OnFocus) soll das feld dann geleert werden (this.value='').

also:

<input [...] onFocus="this.value=''">

das geht auch so.

jetzt will ich das ganze aber mit einer funktion verbinden, also dass anstatt onFocus="this.value=''" folgendes steht:

onFocus="Leeren();"

wobei ich folgendes im head definiert hab:

funktion Leeren() {

this.value='';

}

es soll dann also darauf hinauslaufen, dass die funktion das feld nur dann leert, wenn noch der Standart im feld steht (hier: "name"), und das feld so lässt, wenn etwas anderes drin steht (z.b. "benni"...).

dazu ist mein versuch:

funktion Leeren(value) {
if(this.value==value) {
this.value = '';
}
else {
}

die dann mit

<input [...] value="Name" onFocus="Leeren(Name);">

aufgerufen wird.

geht aber net... (schon beim Laden zeigt der IE "Fehler auf der Seite" und wenn ich das feld anklicke, passiert nix...)

hat jemand ne a´hnung, warum?

viele grüße,
benni

  1. Hallo benni,

    ohne jede Garantie versuche folgendes:

    onFocus="Leeren(this);"

    funktion Leeren(objekt)
    {
      objekt.value='';
    }
    Gruß

    Eidgenosse

    1. Hallo

      Ich bin für ne kombi aus dem beiden, denn wie mir der vorschlag von benni erscheind soll in dem prarameter übergeben werden, bei welcher value gelöscht werden soll. demnach
      onFocus="Leeren(this, 'Name');"

      funktion Leeren(obj, val) {
        if (obj.value == val) obj.value = '';
      }

      Grüße

      David

      --

      "Nobody will ever need more than 640k RAM!"
      1981 Bill Gates
      1. Ich glaub nicht das dass funktioniert. Das Problem stellt das this-objekt dar.

        tag oder deren eigenschaften anzusprechen, und das browserunabhängig geht am besten mit document.getElementsByName("Name")[0].eigenschaft

        also:

        function test(bez){
        if(document.getElementsByName(bez)[0].value!="text"){
        document.getElementsByName(bez)[0].value = "";}
        }
        und
        <input id="zutesten" name="zutesten" onFocus="test(zutesten)">

        ich habs jetzt nicht ausprobiert, aber so realisiere ich immer meine mouseover-effekte

        vielglück damit

        matze

        1. Ich glaub nicht das dass funktioniert. Das Problem stellt das this-objekt dar.

          tag oder deren eigenschaften anzusprechen, und das browserunabhängig geht am besten mit document.getElementsByName("Name")[0].eigenschaft

          also:

          function test(bez){
          if(document.getElementsByName(bez)[0].value!="text"){
          document.getElementsByName(bez)[0].value = "";}
          }
          und
          <input id="zutesten" name="zutesten" onFocus="test(zutesten)">

          ich habs jetzt nicht ausprobiert, aber so realisiere ich immer meine mouseover-effekte

          hättse es mal ausprobiert. Das was du da machst funktioniert wenn nur in neuen Browsern (in wirklichkeit funzt es gar nit) und ist absolut nicht wiederverwendbar. Während 'this' immer funktioniert.

          Struppi.