I have a requirement to force the pageUp and pageDown keys to function the same as the arrowUp and arrowDown. I believe I'm ok with IE but have issues with setting the value for FireFox ...specifically line: evt.which=38; and line evt.which=40; -the "which" seems to only have a getter-
try{
if (window.document.addEventListener) {
window.document.addEventListener("keydown", reviseKeyFunctions, false);
}else{
Here is an answer for those who are looking for a keystroke evaluation script that works in Internet Explorer (IE 5.5, 6.0, 7.0 for PC--IE 4.0, 5.2 for Mac), Mozilla Firefox (Windows, Linux, and Apple Macintosh), Safari, Opera, and other off-brand web browsers.
I have gone through many groups trying to find code that didn't break in Firefox--yet still worked in other browsers. Although many people give input on this topic, few are correct in their handling of the events to give the correct results across the board.
I am a Webmaster, and although I have worked with much JavaScript, I do not claim to be an expert on this topic--so feel free to post any improvements that you can make.
Here's the test code, this snippet designed to force numeric-only input in any browser, with the exception of a couple keys that are still needed for form navigation (such as Tab--although this can be tailored to your needs by adding more exceptions):
---SNIP_01--- <script language="JavaScript"> function CheckNumericKeyInfo($char, $mozChar) { if($mozChar != null) {// Look for a Mozilla-compatible browser if(($mozChar >= 48 && $mozChar <= 57) || $mozChar == 0 || $char == 8 || $mozChar == 13) $RetVal = true; else { $RetVal = false; alert('Please enter a numeric value.'); } } else {// Must be an IE-compatible Browser if(($char >= 48 && $char <= 57) || $char == 13) $RetVal = true; else { $RetVal = false; alert('Please enter a numeric value.'); } } return $RetVal; } </script> ---END_01---
I have personally tested this on PC, Mac, and Linux systems in every Web browser that I can get my hands on. It's far easier than the other scripts that I've found, and you can just add "alert('keyCode: ' + $char)" to find any other keycodes you might want to allow if you don't know them off-hand. Obviously there is room to add a larger exception list if you have need of it, and it might be better to just set $RetVal to TRUE in the else and add an else if for IE, but my use didn't require it.
I'm trying to figure out what key the user pressed using a Danish keyboard layout. charCodeAt returns the correct number, but event.keyCode returns a wrong number, when using one of the keys that are different on a Danish keyboard layout. "-" returns 45 and 189 respectively. Etc. (The input-field in the sample code below displays the right character).
I've tried setting the lang-parameter to 'da', but it doesn't make a difference.
Am I missing something, or is the event.keyCode in IE hardcoded to an english keyboard layout? Is there a way to automatically convert the event.keyCode so it corresponds with the users keyboard?
I am trying to use the jquery keydown event.I wan to fade in a div that is a form then when the user presses keycode 17 meaning control key this div and form will fade in at the center of the screen.here is the code I have:
This is in a php file and echoing the code. So the " " ignore it it's just saying to php that those are to be echoed as " " This code isn't working. I would press control key but no fade in occurs. I include this php file to all my websites webpages which are php files.
how to avoid temporary (local) variables to reassign this.Example as follow:
function Test(id){ this.id=id; this.init=function(){ // some initialization go here
[code]....
This is terrible because it breaks the structure, and so many local temporary variables will be instantiated (possibly they will eat up the memmory).However, this type of reference is just so popular in jQuery, and they got a beautiful solution. Example:
$('li').each(function(){ // Do with $(this). This is beautiful, but I don't understand how could they make this scheme. })
keyCode and which will get the same value, so anything different? <script> $(function() { $(window).keydown(function(e) { console.log(e.keyCode); console.log(e.which); }); }); </script>
I have a 3 textareas that when the user presses the spacebar I would like for the code to execute a TAB to move between them instead. My code works if I make the replacement keycode an number or letter but it wont work if I use TAB. The browser is IE. code...
I got this (piece of) script from 'DHTML Utopia - Modern Webdesign - Using Javascript & DOM'.
function aKeyWasPressed(e) { if (window.event) { var key = window.event.keyCode; } else { var key = e.keyCode; } alert('You pressed the key: ' + String.fromCharCode(key)); }
It is example of adding an eventlistener to a textarea. The events works alright, but when I press 'a' the alert gives me 'A', when I press Ǝ' I get 'h', when I press Ɔ' I get ''', when I press 'à' I get Ɔ', .... Has probably something to do with the fact that I don't live in the UK or USA. But it shouldn't matter; a key is a key.
Basically we are trying to simulate the tab key when the down arrow key is pressed. (we know there are other way to control focus flow but we use a lot of dynamic jsp fields, that will make the flow control a nightmare, we just want basic tabbing from the arrow key)
1)We are able to capture a onkeydown event and reasign it with another key value with no problem within an html document without a form.
example:
var ieKey = event.keyCode;
if (ieKey == 40) { event.keyCode = 9; }
however as soon as we insert a form tag in the document, this stops functioning. The asignment seems to be fine as an alert clearly shows, but the instruction seems to be ignored. Code:
I have an input field with onkeyup event that displays the code of the key the user pressed. The thing is, this works for all the keyboard buttons except for the ENTER key.
I need an event that checks if the size of a DIV has changed. The "resize" event works in IE but not in FF. Or, more precisely, The "resize" event works in FF but NOT for resizing DIVs. Is there an event that works like the "resize" event but also can be used in with DIVs in FF?
I am doing some showing and hiding of unordered lists for menus. I like CSS and so I swap the id of the unordered list to either show or hide the <ul>. The code works fine in Firefox but not in IE6. I start with the <ul> hidden using <ul id="SubMenu1Hide">. I attach the evens to the onmouseover and onmousout events. The bug happens in IE when I rollover the element with the event attached it does not show or disappear.
The <ul> seems to stay hidden like it is the default, it will never appear. Here is the weird thing. If I start with the id="SubMenu1Show" the menu shows as it is supposed to, stays visible when I mouseover and then disappears when I mouseout. It then continues to work as it is supposed to, appearing on rollover and disapearing on mouseout.
I want the submenus to all stack on top of each other on the page and be hidden by default then only show when you mouseover it's main menu heading. Here is the code:
I have come across a problem that seems common with firefox and the use of event. I have a simple javascript function which trys to determine the element that an event was acted upon:
Code:
This is called on click of a input:
Code:
This seems to work correctly for every browser except firefox. A quick search online and all the fixes seem to include:
Code:
But when I debug this function, neither e or event are defined, am i overlooking something really obvious?
My original idea of two trains, however pictural it was, appeared to be wrong. The truth seems to be even more chaotic.
IE implements its standard down-up model: any mouse event goes from the deepest visible element to the top. By carefully studying fromElement and toElement properties, one can handle events on any point of their way up.
NN/FF implements a "Russian hills" style: mouse events go first up->down (window->deepest element), and right away after that it goes down->up (deepest element->window). On theory you can handle events during any phase on any level. On practice this implementation has some major flaws. I don't have NN handy right now, but in FF we have: