这是我的代码,它使用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
将事件Handlers添加到控件中。在这里,我将其附加到ID为id
的控件上。文本框只接受数字输入,一切都很好,但是问题是当他想删除所有数字并想输入其他数字时。因此,诸如SHFT + HOME然后删除,Delete之类的操作无效。请有人可以更好地完善代码。同样,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
});
}
}
onkeydown
/ onkeyup
验证,您可能会发现更容易验证onblur
。这样一来,您不必担心有人可能会使用各种组合键来选择/删除/重新键入文本,例如Ctrl +方向键,Ctrl + v粘贴文本,Ctrl + a选中全部。您总是可以使用新的HTML5 <input type="number">
来约束输入,然后使用Modernizr为不支持新输入类型的浏览器添加事件处理程序代码:
if (Modernizr.inputtypes.number) {
...
// Add your code in here
...
}