Kolja Beigel: Javascript-Verweise mit Event-Handler

Hallo.

Ich möchte ein Formular vor dem Absenden auf Vorhandensein wichtiger Eingaben überprüfen. Die zugehörige JavaScript-Funktion wird über einen Verweis aufgerufen. Sie übergibt die Eingaben per submit() an ein CGI-Skript, wenn alles okay ist. Ansonsten wird eine Meldung ausgegeben.

Da das Projekt später auf einem Rechner ohne Eingabegeräte außer der Tastatur laufen wird, wird bei den Ereignissen onFocus und onBlur jeweils die Verweis-Grafik getauscht, damit der Anwender weiß, daß er sich auf einem Button befindet.

Probiert man das ganze mit IE 5 auf NT aus, steht man vor folgendem Problem: wenn die Formulareingaben nicht okay sind, erscheint erst die Meldung. So weit so gut. Dann aber erscheint eine Sanduhr und bleibt auch da - so als ob eine Seite geladen würde.

Nehme ich die Event-Handler raus, klappt's problemlos. Die brauche ich aber dringend. Wie krieg ich die Sanduhr trotzdem weg?

--------------------- QUELLTEXT (Ausschnitt) ---------------------

<html>[...]</head>
<body>
<form action="xyz.cgi" method="POST" name="fragebogen">
<script language="javascript">
<!--
  function check()
  {
    with (document.fragebogen)
    {
      if (Beruf.value.length <=2)
      {
        alert("Bitte geben Sie Ihren Beruf ein.");
Beruf.focus();
      }
    else submit();
    }
  }
//-->
</script>
<input type=text name="Beruf">
<a href="javascript:check()" onFocus="button.src='button_pressed.gif'" onBlur="button.src='button.gif'"><img name="button" border=0 src="button.gif"></a>
</body>
</html>

  1. Hallo Kolja!

    Meiner Meinung nach fehlt da ein "return false;"

    und zwar hier:

    <html>[...]</head>
    <body>
    <form action="xyz.cgi" method="POST" name="fragebogen">
    <script language="javascript">
    <!--
      function check()
      {
        with (document.fragebogen)
        {
          if (Beruf.value.length <=2)
          {
            alert("Bitte geben Sie Ihren Beruf ein.");

    »»  Beruf.focus();
    !!!______ return false; _______!!!

    }
        else submit();
        }
      }
    //-->
    </script>
    <input type=text name="Beruf">
    <a href="javascript:check()" onFocus="button.src='button_pressed.gif'" onBlur="button.src='button.gif'"><img name="button" border=0 src="button.gif"></a>
    </body>
    </html>

    Jetzt müsste es klappen!

    Bis dann
    Alex