Tastendruck im IE abfangen
Rene
- browser
Hi,
der IE hat die dumme Angewohnheit bei Druck auf die ESC-Taste alle Formulareingaben wieder zu löschen bzw. auf den letzten Wert zurückzustellen (wie beim Klick auf einen Reset-Button). Jetzt dachte ich mir, trickse ich den IE aus, indem ich die Taste ESC per Javascript abfange
function fesc()
{
if(window.event)
{
var druck = window.event.keyCode;
if(druck == 27){return false;}
}
}
aber das hat leider nicht funktioniert. Ist das ein "Feature" des IE? Und kann man dieses "Feature" irgendwie deaktivieren?
Und bevor die Diskussion wieder losgeht: Es handelt sich um eine Intranet-Seite, keine Besucher-Seite!
Hallo Rene,
der IE hat die dumme Angewohnheit bei Druck auf die ESC-Taste alle Formulareingaben wieder zu löschen bzw. auf den letzten Wert zurückzustellen
alle? Das wäre mir neu. Du meinst sicher das aktuell aktive (fokussierte) Eingabefeld.
var druck = window.event.keyCode;
if(druck == 27){
return false;}
Das "return false;" müsste eigentlich langen. Welche IE Version?
Probier doch noch ein:
if(druck == 27){
event.cancelBubble=true;
return false;
}
HTH
Grüße, Jochen
Hi
alle? Das wäre mir neu. Du meinst sicher das aktuell aktive (fokussierte) Eingabefeld.
Da hast du recht! Aber wenn man mehrmals die ESC-Taste drückt, werden alle Änderungen zurückgenommen.
var druck = window.event.keyCode;
if(druck == 27){
return false;}Das "return false;" müsste eigentlich langen. Welche IE Version?
Probier doch noch ein:if(druck == 27){
event.cancelBubble=true;
return false;
}HTH
Grüße, Jochen
"cancelBubble" kannte ich noch gar nicht. Hat aber leider auch nicht funktioniert. Ich habe jetzt folgendes ausprobiert. Ich bin aber noch nicht so ganz zufrieden. Falls man aus Versehen die ESC-Taste drückt, sollte es seinen Zweck erfüllen. Wer aber mehrmals die ESC-Taste drückt (und dann alle Felder leer sind) und dann mit "Ok" bestätigt ist selbst schuld, oder?
<html>
<head>
<script language="javascript">
var last_value = new Array();
function fesc(t,v)
{
if(window.event)
{
var druck = window.event.keyCode;
if(druck == 27)
{
var check = confirm("Ooops, Sie haben aus Versehen auf die ESC-Taste gedrückt! Klicken Sie auf „Abbrechen“, um den letzten Wert wiederherzustellen.");
if(check == false)
{
for(var a in last_value)
document.getElementById(a).value = last_value[a];
}
}
else
{
last_value[t] = v;
}
}
}
</script>
</head>
<body>
<form>
<input type="text" onkeyup="fesc(this.id, this.value);" id="1">
<input type="text" onkeyup="fesc(this.id, this.value);" id="2">
<input type="text" onkeyup="fesc(this.id, this.value);" id="3">
</form>
</body>
</html>
Hallo,
"cancelBubble" kannte ich noch gar nicht. Hat aber leider auch nicht funktioniert.
<input type="text" onkeyup="fesc(this.id, this.value);" id="1">
ach so. Im onkeyup ist das vermutlich viel zu spät. Wenn, dann solltest du den keydown abfangen.
Guck mal auf diese Testseite
Grüße,
Jochen
Hallo,
"cancelBubble" kannte ich noch gar nicht. Hat aber leider auch nicht funktioniert.
<input type="text" onkeyup="fesc(this.id, this.value);" id="1">ach so. Im onkeyup ist das vermutlich viel zu spät. Wenn, dann solltest du den keydown abfangen.
Guck mal auf diese TestseiteGrüße,
Jochen
Ja, supergeil der Link! Das Skript muss ich nur noch an meine Bedürfnisse anpassen, dann sollte es wie gewünscht funktionieren.
Danke und Gruß
<input type="text" onkeyup="fesc(this.id, this.value);" id="3">
warum machst du es dir so umständlich und übergibst nicht einfach direkt this?
Dann hast du vollen Zugriff auf das Element und kannst dir die id sparen.
Struppi.
<input type="text" onkeyup="fesc(this.id, this.value);" id="3">
warum machst du es dir so umständlich und übergibst nicht einfach direkt this?
Dann hast du vollen Zugriff auf das Element und kannst dir die id sparen.Struppi.
Manchmal macht man sich das Leben etwas schwerer, da es sonst zu einfach wäre ;-)
Danke und Gruß