Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 2603
  • Last Modified:

How to replace window.event.Keycode = 0 for firefox

Hi
Working on  for Cross browser support, facing an issue, with window.event.Keycode = 0 is not working in firefox as well safari.
For onKeyPress it should not allow any charecters in the text box.
0
sandeep1983
Asked:
sandeep1983
1 Solution
 
fsze88Commented:
LIIKE THIS?
<script language="javascript">
 
function getKeyevent(e){
var keynum;
var ctrlKey;
var eventObj;
ctrlKey = false;
 
if(window.event) // IE
	{
            	keynum = event.keyCode;
            	ctrlKey  = event.ctrlKey;
            	EventObj = event.srcElement;
            	charCode = String.fromCharCode(keynum); 
 	}
else if(e.which) // Netscape/Firefox/Opera
	{
            	keynum = e.which;
            	ctrlKey = e.ctrlKey;
            	EventObj = e.target;
            	charCode = String.fromCharCode(keynum);
	}
  alert(keynum);
 
}
</script>
<body onkeydown="return getKeyevent(event);" >
 
</body>

Open in new window

0
 
sandeep1983Author Commented:
if( regularEpressioDigit.test(keyPressed) == false )
    {
            window.event.keyCode = 0;
          
        
    }
Can I substitute this with anything instead of Browser forking

0
 
David S.Commented:
Here's another way to write the function fsze88 posted.

If you simply want to prevent someone from typing a character, it would be better to set the field as readonly.  Alternatively you could cancel the event instead of changing the keyCode.
function getKeyevent(e){
  e = e||window.event;
  var keynum = e.which||e.charCode||e.keyCode;
  var charCode = String.fromCharCode(keynum); 
  var ctrlKey = false;
 
  var EventObj=e.target||e.srcElement;
 
  alert(keynum);
 
}

Open in new window

0
Get expert help—faster!

Need expert help—fast? Use the Help Bell for personalized assistance getting answers to your important questions.

 
sandeep1983Author Commented:
Hi

Can anyone please help, how to nullify an event key press when charecters are enterend and oly numerics are accepted
similar to window.event.keycode =0
which would support all browsers, especially safari and firefox

event.reteturnValue = false (this approch was not useful
0
 
b0lsc0ttIT ManagerCommented:
The html page below is cross-browser and how I have prevented non-numeric keys from being used in a field.  Let me know if you need help using it in your page.  Note the return that is used in the event.  The key is really just the function and the value for the event in the input box.
bol

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<link href="/style.css" rel="stylesheet" type="text/css" />
<title>Validation</title>
<script type="text/javascript">
function isNumeric(e) {
	var k = (e.which)? e.which : e.keyCode;
//	document.getElementById('status').innerHTML = (k > 31 && (k < 48 || k > 57) && (k != 46))? 'not number ' + k : 'number ' + k;
	return (k < 48 || k > 57)? false : true;
}
</script>
</head>
 
<body>
<h3>Is Numeric</h3>
 
<br /><br />
Type: <input type="text" name="input1" onkeypress="return isNumeric(event);" />
&nbsp;&nbsp;&nbsp;
<span id="status"></span>
 
</body>
</html>

Open in new window

0
 
sandeep1983Author Commented:
Can you modify the above code without using Document.Selection to validate Decimal upto 2 and numerics upto 7 total 9 digits

Intention to support all browsers
0
 
b0lsc0ttIT ManagerCommented:
Sure.  Use the code below.  Make sure you test it for various cases.  The function needs to go in the head part of the html with the other function and the input is modified as you see in the code.
Let me know if you have a question.
bol

<input type="text" name="input1" onkeypress="return isNumeric(event);" onblur="return checkValue(this);" />
 
function checkValue(num) {
    if (!num.value.match(/^(\d{1,9}|\d{1,8}\.\d{1}|\d{1,7}\.\d{2})$/)) {
        alert("Please enter a number with only up to 9 digits and using no more than 2 decimal places.");
        num.value = "";
        return false;
    }
    return true;
}

Open in new window

0
 
b0lsc0ttIT ManagerCommented:
Why the B grade?  It seems like I provide details and the exact answer you needed.  I even added an extra validation that, frankly, wasn't part of the original question.  Let me know if the grade was a mistake because that can be easily corrected.  If there is a reason for it then please respond to explain.  If you aren't real sure what the grading means on EE then let me know.
bol
0
 
modus_operandiCommented:
Grade changed to 'A'
 
modus_operandi
EE Moderator
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

The 14th Annual Expert Award Winners

The results are in! Meet the top members of our 2017 Expert Awards. Congratulations to all who qualified!

Tackle projects and never again get stuck behind a technical roadblock.
Join Now