Bei Enter drücken Button aktivieren

So.. wie ich gerade herausgefunden habe, ist der 2. JavaScript-Code-Block dort, wo er jetzt steht, nicht an einer gültigen Position (laut W3-Validator). Kannst du mir sagen, wo genau sich der JavaScript-Code befinden muss, damit er noch gültig ist?
Ich vermute fast, dass er nicht in einer Tabelle stehen darf oder gleich nach dem body-tag stehen muss oder so etwas in die Richtung...
Da sich diese Seite aber aus mehreren Templates zusammenbaut, werde ich wohl dem OK-Button (der ja jetzt im namen eine nummer stehen hat) noch eine fixe id zuweisen, damit ich in der javascript-Funktion pressKey() nicht auch auf den variablen namen des buttens rücksicht nehmen muss und sie zu den anderen javascript-funktionen am anfang der seite dazu schreiben kann (falls du nachvollziehen kannst, was ich überhaupt gerade meine... ;)) Aber das ändert ja eigentlich nichts am Problem bzw. der Lösung dazu :)
 
  • Ein Formular kann in den meisten Browsern auch durch das [ENTER] in einem Text-Input gesendet, dieses Verhalten musst du unterbinden.
    Du tust das, indem der onkeypress-Event in diesen Feldern gecancelt wird, indem z.B. die JS-Anweisung für diesen Event den Rückgabewert false hat.
  • Deine Methode funktioniert nur in IE/Opera.
    In anderen Browsern musst du den Event einer Funktion übergeben, wenn du damit weiterarbeiten willst, z.B. den keyCode ermitteln.
Angesichts dessen sollte dich Folgendes weiterbringen:
Code:
//der Aufruf:
onkeypress="return pressKey(event);"

//die Funktion:
<script type="text/javascript">
function pressKey(evt)
{
  if(evt.keyCode==13)
  {
    document.BUCHENSEITE.BUTTON_OK200568.click();
    return false;
  }
  return true;
}
</script>

Zu den Skriptbereichen:
Merke es dir am Besten so:
sie sind erlaubt im <head> und überall dort, wo du auch einen <span> hintu würdest.
Das erste <script> ist somit auch falsch platziert.
 
Jipiiieee :)
Vielen vielen Dank für deine Mühe!! Es funktioniert endlich!
Zeitgleich zu deiner Antwort habe ich auch noch eine weitere Möglichkeit gefunden:
ich setze in der Funktion pressKey einfach den keyCode wieder auf 0 zurück, allerdings muss man dann vorher irgend etwas mit bubble auf false setzen oder so... ich hab schon kurz was darüber in einigen Java-Tutorials gelesen, bei gelegenheit werde ich mir das alles noch etwas genauer anschauen, was hier was macht.
Denn auch das Übergeben von Variablen und das mit den Return-Variablen habe ich in JavaScript noch nicht so wirklich durchschaut... funktioniert irgendwie nicht so, wie man es von anderen "normalen" Programmiersprachen gewöhnt ist.
Zum Beispiel in deinem Code: ich weiß nicht wirklich, woher evt kommt und wohin der return-wert (true/false) kommt...
Aber brauchst dir jetzt keine Mühe machen, mir das auch noch zu erklären, ich werd schon noch drauf kommen ;)

Also danke und Lg,
Miraculixx
 
Miraculixx hat gesagt.:
Zum Beispiel in deinem Code: ich weiß nicht wirklich, woher evt kommt und wohin der return-wert (true/false) kommt...
Aber brauchst dir jetzt keine Mühe machen, mir das auch noch zu erklären, ich werd schon noch drauf kommen ;)

Also danke und Lg,
Miraculixx

Naja, die Zeit kann ich mir nehmen:-)

evt ist das Argumnet, welches der Funktion beim Aufruf übergeben wird:
Code:
onkeypress="return pressKey(event);"
(Statt evt könnte da auch "blubb" stehen, "evt" ist ein selbstgewählter Variablenname)
In dieser Variable ist das übergebene Argument gespeichert event.

Dabei handelt es sich um das Event-Objekt, das ist automatisch verfügbar, sobald ein Event eintritt(hier:keypress)

Zum return-Wert:
die Funktion gibt ja entweder true oder false zurück.
Code:
//die Funktion:
<script type="text/javascript">
function pressKey(evt)
{
  if(evt.keyCode==13)
  {
    document.BUCHENSEITE.BUTTON_OK200568.click();
    return false;
  }
  return true;
}
</script>
Das hat nur einen Effekt, wenn dieser Rückgabewert verarbeitet wird.
Dies wird getan, indem dem Funktionsaufruf ebenfalls ein return vorangestellt wird.
Code:
onkeypress="return pressKey(event);"

Der Funktionsaufruf hat also in erster Linie das Ziel, den Rückgabewert von pressKey() zu verarbeiten(true/false).
Wurde [ENTER] gedrückt, ist dies gleichbedeutend mit
Code:
onkeypress="return false"
(wobei natürlich die Anweisungen innerhalb der Funktion ausgeführt werden).

Das "return false" hat den Effekt, dass das, was der Event normalerweise bewirken würde(z.B. hier das Senden des Formulares)... nicht eintritt. Der Event hat somit quasi nicht stattgefunden.
 
Zurück