views:

95

answers:

3

This is my code for making textbox accept number only.

<asp:TextBox ID="txtRotationNo" runat="server" onkeydown="return NumberOnly();" CssClass="textbox"></asp:TextBox>

function NumberOnly () {
    if(!(event.keyCode>=48 && event.keyCode<=57) && event.keyCode!=8) {
        event.returnValue=null;
    }
}

This code is working in Chrome and Opera, but not in firefox.

Can you tell me what's wrong with this code?

+8  A: 

Many things wrong with the code, including the lack of an event argument, plus the wrong way about cancelling the event. Here, just replace the code with this:

function NumberOnly(e) {
  e = e || window.event; // remove this if you don't need IE support
  if (!(e.keyCode >= 48 && e.keyCode <= 57) && e.keyCode != 8)
    e.preventDefault();  // standard method of cancelling event
  return false;          // IE method of cancelling event
}
Delan Azabani
You have used `event` in the `if` statement - shouldn't it be just `e`?
Amarghosh
Yes. Sorry about that; forgot to change that when copying OP's code. Fixed.
Delan Azabani
A: 

Firefox needs the event within the call of the handler and it needs to return "false" to ignore an action. This code might work:

function NumberOnly(event) {
  if(!(event.keyCode>=48 && event.keyCode<=57) && event.keyCode!=8) {
    event.returnValue=null;
    return false;
  }
}

But I think you can skip the event.returnValue=null;

Kau-Boy
A: 

On the contrary to IE, 'event' is not a global variable in Firefox. So you've got to pass the desired pressed key informations as an argument.

DrDro