Archivlink: javarea.de Forum > JavaScript > Enter Abfrage
Vollständigen Link anzeigen: javarea.de Forum > JavaScript > Enter Abfrage

Pages: [1]

geschrieben von Michael am 18.08.2005 - 09:57
Hi Leute!

Wie kann man denn unterdrücken, dass in einem Formular bei Bestätigen der Enter-Taste das Formular nicht abgesendet wird.

Habe jetzt schon einiges probiert:

HTML-Quelltext
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
var count = "0";

function checkEnter(e) { 
  if(e.keyCode == 13) {
    count = "0";
  } else {
    count++
  }
} 

function senden() {
  if(count > "0") return true;
  else return false;
}

<form ... onSubmit="return senden()">

<input name="submit" type="submit" value="Absenden" onClick="checkEnter(event)">


Jedoch geht das irgendwie nicht - mach hier etwas falsch, oder geht es einfach ned!?

geschrieben von gflaig am 18.08.2005 - 21:04
Hallo Michael,

on click hilft nix um TASTEN abzufangen, dazu bedarf es einer Ereignisabfrage nach onkeypress.

Folgendes Beispiel bringt einen Alert mit der Tasten-Nummer (13 für Enter) wenn 'ne Taste gedrückt wird, und einen Alert mit "click" wenn auf das Input-Feld geklickt wird.

HTML-Quelltext
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
<html>
<head>
<title>Key Test</title>
<script type="text/javascript">
function Taste (Ereignis) {
  if (!Ereignis)
    Ereignis = window.event;
  alert(Ereignis.keyCode);
}
document.onkeypress = Taste;
</script>
</head>

<body>
<input name="submit" type="submit" value="Absenden" onClick="alert('click');">
</body>
</html>


Ich hoffe, das wars.

geschrieben von gflaig am 18.08.2005 - 21:09
Sorry, in der Tasten Routine kannst du dir vielleicht ein Flag setzen, das du in der Click Routine abfragst, und dann nix machst, dann das Flag zurücksetzen, für den wirklichen Click.

Wenn ich bischen Zeit hab probier ichs noch aus.

geschrieben von gflaig am 18.08.2005 - 21:27
- war nur Teil der Lösung - Korrektur folgt.

geschrieben von Michael am 19.08.2005 - 10:33
So ich hab da jetzt so gelöst - ein bisschen ein anderer Ansatz aber er funktioniert:

HTML-Quelltext
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
41: 
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Unbenanntes Dokument</title>
</head>

<script language="javascript" type="text/javascript">
<!--
var count = 0;

function resetflag() {
  var count = 0;
}
  
function check() {
  if(count > "0") {
    return true;
  } else {
      return false;
	}
}
  
function flag() {
  count++;
}
-->
</script>

<body onload="resetflag()">

<form action="senden.php" method="post" onSubmit="return check()">

<input name="form1" type="text" ><br />
<input name="form2" type="text" ><br />

<input name="submit" type="submit" value="senden" onmousedown="flag()">

</form>

</body>
</html>

geschrieben von gflaig am 19.08.2005 - 10:54
Sieht so aus, wie immer, dass Querdenken hilft.

Deine eigene Lösung scheint mir die eleganteste - Was ist der Unterschied zwischen einem Klick mit der Maus und der Benutzung der Entertaste ? Ein Mausknopf wurde betätigt !
(eventuell noch umstellen auf onmouseup, dann kannst du nach dem Drücken den Knopf noch verlassen :-) )-

Ich hab mich mit meiner Lösung komplett verrannt, zu identifizieren, wann es sich um einen echten Mausklick handelt, und wann um die Entertaste. Das mit dem Flag bringts nicht, weil das eventuell von einer anderen Taste ausgelöst werden kann etc etc.


Powered by: JBB v.2.0.4 Copyright ©2000-2006, www.javarea.de.