Here's my code and it uses asp.net ajax client library to add event handlers
function IsDigit(id) { //short variable,args name for best minification
if ($get(id)) {
var v = function (e) {
var r = /\d/;
if (!r.test(String.fromCharCode(e.keyCode))) e.preventDefault();
}
$addHandlers($get(id), {
keydown: v
});
}
}
$get(ID)
gets the control with the id
$addHandlers
adds event Handlers to the control. Here i attach it to the control with ID id
. It all works well the textbox accepts only numeric input, but the problem is when he wants to delete all numeric and wants to enter some other numbers. So something like SHFT + HOME and then delete, Delete are not working. Please can someone refine the code better. Also is Keydown optimal for th开发者_开发百科is kind of job
I temporarily solved it by doing this, but this does allow unexpected characters for brief second then removes it
function IsDigit(id) { //short variable,args name for best minification
if ($get(id)) {
var p = "";
var v = function (e) {
var r = /^\d*$/;
if (r.test(this.value)){p = this.value;} else {this.value=p;}// e.preventDefault();
}
$addHandlers($get(id), {
keyup: v
});
}
}
Rather than trying to do your validation onkeydown
/ onkeyup
you might find it easier to validate onblur
. That way you don't have to worry about the various key combinations that someone might use to select / delete / re-type text e.g. ctrl + arrow keys, ctrl + v for pasting text, ctrl + a to select all.
You could always use the new HTML5 <input type="number">
to constrain the input, then use Modernizr to add your event handler code for browsers that don't support the new input type:
if (Modernizr.inputtypes.number) {
...
// Add your code in here
...
}
精彩评论