这是我的代码,它使用asp.net ajax客户端库来添加事件处理程序
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)
获取带有id的控件
$addHandlers
将事件处理程序添加到控件中。在这里,我将其附加到ID为id
的控件。一切正常,文本框只接受数字输入,但问题是当他想要删除所有数字并想要输入其他一些数字时。所以类似[SHFT + HOME]然后删除,[删除]不起作用。请有人可以更好地完善代码。 Keydown也是这类工作的最佳选择
我通过这样做暂时解决了这个问题,但这确实允许短暂的意外字符然后将其删除
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
});
}
}
答案 0 :(得分:0)
您可能会发现验证onkeydown
更容易,而不是尝试进行验证onkeyup
/ onblur
。这样您就不必担心有人可能会用来选择/删除/重新键入文本的各种组合键,例如ctrl +箭头键,ctrl + v用于粘贴文本,ctrl + a用于选择全部。
您始终可以使用新的HTML5 <input type="number">
来约束输入,然后使用Modernizr为不支持新输入类型的浏览器添加事件处理程序代码:
if (Modernizr.inputtypes.number) {
...
// Add your code in here
...
}