Events im Firefox
HS
- javascript
Hallo,
ich habe ein <input>, dass bei einen onkeydown ein JavaScript ausführt. Wenn die gedrückte Taste die Enter/Return-Taste ist, wird das Formular abgeschickt. Im IE komm ich an die Taste mit window.event ran, das geht im Firefoy ja leider nicht. Das hier "document.onkeydown = TasteGedrueckt;" für den Firefox geht leider nicht, weil ich der Function noch weitere Werte übergeben muss, die ich nur direkt an dem Input definieren kann.
Hat jemand ne Idee wie ich im Firefox an die gedrückte Taste herankomme?
Danke und Gruß, HS
Im Firefox funktioniert das so wie es eigentlich funktionieren sollte:
document.getElementById('dein_input_feld').onkeydown = function(e)
{
// e ist dein event
// blub blub mach was....
}
Hallo,
ich habe ein <input>, dass bei einen onkeydown ein JavaScript ausführt. Wenn die gedrückte Taste die Enter/Return-Taste ist, wird das Formular abgeschickt.
Dir ist bewusst, dass das die Browser bereits von Haus aus machen?
Wenn du dazu noch ein Script ausführen willst, verwende den onsubmit-Handler.
Im IE komm ich an die Taste mit window.event ran, das geht im Firefoy ja leider nicht.
Normalerweise macht man das so:
Formularelement.onkeypress = function(event){
//jetzt kannst du das event mit der Variable „event“ abfragen
}
mfg. Daniel
Servus,
Dir ist bewusst, dass das die Browser bereits von Haus aus machen?
Wenn du dazu noch ein Script ausführen willst, verwende den onsubmit-Handler.
Ja, schon klar. Das Problem ist nur, das ich ca. 30 verschiedene input Eemente auf der Seite habe und mindestens die Hälfte eine besondere Verarbeitung braucht. Daher muss ich auch wissen in welchem input die Taste gedrückt wurde. :-)
Normalerweise macht man das so:
Formularelement.onkeypress = function(event){
//jetzt kannst du das event mit der Variable „event“ abfragen
}
Okay, das funktioniert dann wohl auch in beiden Brwosern?
Gruß, HS
Formularelement.onkeypress = function(event){
//jetzt kannst du das event mit der Variable „event“ abfragen
}
>
> Okay, das funktioniert dann wohl auch in beiden Brwosern?
Nein, im IE musst du über window.event auf den Event zugreifen.
Formularelement.onkeypress = function (ev) {
if (!ev) ev = window.event;
alert(ev);
};
Mathias
Servus,
Formularelement.onkeypress = function(event){
//jetzt kannst du das event mit der Variable „event“ abfragen
}
Ich bin scheinbar zu blöd. Die Namen der inputs sind sehr kryptisch und auf Grund von bestimmten Umständen haben die keine IDs. Ich mache also folgendes:
~~~javascript
var elements = document.getElementsByName( "<%= ...%>" );
elements[0].onkeypress = function(event)
{
alert("Event abgefangen.");
}
Aber es passiert gar nichts. Ich habe alles mit Firebug kontrolliert. Die Methode ist im Element hinterlegt, aber wenn ich im input eine Taste drücke passiert gar nichts. Noch Ideen?
Gruß, HS
Hallo,
Die Namen der inputs sind sehr kryptisch
Das kann das Problem sein.
var elements = document.getElementsByName( "<%= ...%>" );
Wie lautet der Name denn wirklich - also was steht letztlich im HTML-/JavaScript-Code? (Ich nehme mal an, das ist ASP.NET oder was weiß ich.) Durch was wird <%= ...%> ersetzt?
elements[0].onkeypress = function(event)
{
alert("Event abgefangen.");
}
Triffst du überhaupt das richtige Element?
alert(elements.length);
alert(elements[0]);
elements[0].style.border = "1px solid red";
Die Methode ist im Element hinterlegt
Sicher?
Mathias
Servus,
var elements = document.getElementsByName( "<%= ...%>" );
Wie lautet der Name denn wirklich - also was steht letztlich im HTML-/JavaScript-Code? (Ich nehme mal an, das ist ASP.NET oder was weiß ich.) Durch was wird <%= ...%> ersetzt?
So sieht das gerenderte HTML aus. Jedes dieser Elemente gibt es zwischen 4 und 12 mal.
<input type="text" maxlength="15" size="10" name="txtFil6_51362" value="">
<script type="text/javascript">
var elements = document.getElementsByName( "txtFilter6_51362" );
elements[0].value = "1px solid red";
alert(elements[0].name);
elements[0].onkeypress = function (ev)
{
if (!ev) ev = window.event;
alert(ev);
};
</script>
Triffst du überhaupt das richtige Element?
alert(elements.length);
alert(elements[0]);
elements[0].style.border = "1px solid red";
Ich hab im Debugger das Element angeschaut, da war die Methode drin, allerdings ändert er bei dem Code den Rahmen des input nicht... jetzt bin ich völlig verwirrt.
Gruß, HS
Triffst du überhaupt das richtige Element?
alert(elements.length);
alert(elements[0]);
elements[0].style.border = "1px solid red";Ich hab im Debugger das Element angeschaut, da war die Methode drin, allerdings ändert er bei dem Code den Rahmen des input nicht... jetzt bin ich völlig verwirrt.
und nochmal, was ergeben die obigen alert() Ausgaben?
Wir Wissen ja nicht, welches Element du "angeschaut" hast, aber offensichtlich nicht das was du denkst, den an sich ist der Code i.O.
Struppi.
Servus,
und nochmal, was ergeben die obigen alert() Ausgaben?
Wir Wissen ja nicht, welches Element du "angeschaut" hast, aber offensichtlich nicht das was du denkst, den an sich ist der Code i.O.
Das ist mir jetzt peinlich. Das getElementsByName liefert zwei Elemente. Die Nummer zwei ist mein input. Wobei ich nicht ganz durchschaue, wo das zweite Element mit dem gleichen Namen ist.
Dank Deiner/Eurer Hilfe konnte ich das Problem jetzt endlich lösen.
Vielen Dank!
Gruß, HS