Thorsten: Kann mir NIEMAND helfen??

Halo zusammen,

Folgendes (hoffentlich einfaches) Problem:

Ich habe ein Formular mit einem Feld (es werden später mehr). Nach Eingabe wird per Funktion check(Wert,Feld) der Wert des Feldes übergeben und der Name des Feldes.

Im nächsten Schrittt wird gepüft ob auch wirklich nur Zahleneingaben gemacht wurden, wenn nicht dann soll das Feld gelöscht werden (funktioniert mittlerweile!) und der focus auf das aktuelle Feld gesetzt werden (geht nicht!). Im Netscape funktioniert das alles auch sehr schön - nur der IE 5.5 macht das nicht - Aber wieso???

Das script findet ihr unter: www.nethands.de/slfhtml.php3

Über schnelle Hilfe und Verbesserungsvorschläge zu meinem Script wäre ich sehr dankbar.

Gruß
Thorsten

  1. Hi Thorsten,

    kannst Du nicht anstelle von request Focus-Methoden (was Du ja anscheinend verwendest) ein Workaround basteln, in dem Du etwas in das Textfeld reinschreibst? Sobald etwas in dem Textfeld steht müßte dann auch der Focus drauf sein.
    Wie gesagt, ist ein Workaround, gibt sicher auch saubere Lösungen.

    Grüße

    Thorsten

    1. Hi Thorsten, ;)

      kannst Du nicht anstelle von request Focus-Methoden (was Du ja anscheinend verwendest) ein Workaround basteln, in dem Du etwas in das Textfeld reinschreibst? Sobald etwas in dem Textfeld steht müßte dann auch der Focus drauf sein.

      Das mache ich nun. Aber es hat trotz alle dem nichts geholfen. Es wird nun eine 0 in das Feld eingetragen, aber der Focus ist trotzdem weg. :(

      Ich werde aber den Lösungsansatz (weiter oben) mal versuchen. Hat mich auf den Fehler sehr gut gebracht. Danke nochmal!

      Grüße
      Thorsten

  2. Hi Thorsten,

    Hab deinen Lösungsansatz umgestellt (ist jetzt nicht optimal, geht aber mehr um die idee)

    Dein Problem war, dein Feld bekommt zwar den Focus, verliert ihn aber gleich wieder. Wenn ich micht nicht irre ists folgendermassen

    -> texteingabe
    -> durch click auf die Schaltfläche reagiert das onchange deines inputfeldes
    -> prüfen auf zulässigkeit der eingabe
    -> focus setzen
    -> click-ereignis des buttons greift
    -> focus dadurch auf button

    der Ansatz hier ist folgendermassen. Ich setzt auf das onsubmit, den dieses setzt ein _nachdem_ die anderen ereignisse abgehandelt wurden (clicken und onchange).

    <head>
        <link rel="stylesheet" href="../../stylesheet.css" type="text/css">
        <title>www.nethands.de</title>
        <script language="JavaScript">
       <!--
       function check(Name)
       {
        var Feld = document.getElementById(Name);
               var Wert = Feld.value;

    for(i=0;i<Wert.length;++i)
        {
        if (Wert.charAt(i) < "0" || Wert.charAt(i) > "9" )
         {
         alert("Dieses Feld erlaubt nur Zahleneingaben!");
         Feld.value ="";
                    Feld.focus();

    return false;
         }
        }

    }
       //-->
        </script>

    </head>

    <body topmargin="5" leftmargin="5">
    <form method="POST" Name="Formular" action="selfhtml.php3" onSubmit="return check('bm2k_overall1024_16')">
     <h1 align="center">Madonion Benchmarks</h1>
     <table width="100%" style="border-width:1px; border-style:solid; border-color:#8AAFEC" background="../images/box_pics/bgr.gif">
      <tr>
        <td width="100%" valign="top" align="left">
      <table border="0" width="100%" cellspacing="1" cellpadding="1">
        <tr>
              <td width="100%" colspan="3" height="19"><b>3DMark 2000 V 1.1</b></td>
        </tr>

    <tr>
          <td width="6%"></td>
          <td width="23%"> Gesammtpunkte (1024 x 768 x 16)</td>
          <td width="65%"><input type="text" id="bm2k_overall1024_16" name="bm2k_overall1024_16" onFocus="this.style.backgroundColor='#ffff99'" onBlur="this.style.backgroundColor='#FFFFFF'" title="In dieses Feld werden die Gesamtpunkte des 3DMark2000 in 1024x768 mit 16Bit Farbtiefe eingetragen" value="" size="37" >
                  Punkte</td>
        </tr>

    </table>
       </td>
      </tr>
    </table>
      <p> </p>
      <table border="0" width="100%">
        <tr>
          <td width="50%">
            <p align="center"><input type="button"  value="<< Zurück (nicht Speichern!)" name="Zurueck"></td>
          <td width="50%">

    <input type="hidden" name="TABLE" value="pys_benchmark">
       <input type="hidden" name="GOTO" value="benchmark_neu.php3">

    <p align="center"><input type="submit" value="Weiter (Speichern) >>" name="BUTTON"></td>
        </tr>
      </table>
    </form>

    </body>

    </html>

    1. ... achso, man schreibt glaube ich Gesamtpunkte so !

      gruss

      Curt

    2. Hi Curt,

      Dein Problem war, dein Feld bekommt zwar den Focus, verliert ihn aber gleich wieder. Wenn ich micht nicht irre ists folgendermassen
      -> texteingabe
      -> durch click auf die Schaltfläche reagiert das onchange deines inputfeldes
      -> prüfen auf zulässigkeit der eingabe
      -> focus setzen
      -> click-ereignis des buttons greift
      -> focus dadurch auf button

      Hey, da hätte ich noch lange gerätselt. Logisch, da onChange nur beim verlassen des Feldes aktiviert wird und mein focus() da nix bringt. :) Dein Lösungsansatz konnte ich zwar leider nicht verwenden, aber alleine schon um den Hinweis bin ich dir mehr als Dankbar! Habe das übringends in den onBlur Event reingebaut. Klappt wunderbar. :)

      Vielen Dank nochmal für den Hinweis.

      Gruß
      Thorsten