允许通过数字文本框的按键,键入事件进行某些按键的操作

问题描述 投票:2回答:1

这是我的代码,它使用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
        });
    }
}
javascript textbox asp.net-ajax dom-events keypress
1个回答
0
投票
而不是尝试进行onkeydown / onkeyup验证,您可能会发现更容易验证onblur。这样一来,您不必担心有人可能会使用各种组合键来选择/删除/重新键入文本,例如Ctrl +方向键,Ctrl + v粘贴文本,Ctrl + a选中全部。

您总是可以使用新的HTML5 <input type="number">来约束输入,然后使用Modernizr为不支持新输入类型的浏览器添加事件处理程序代码:

if (Modernizr.inputtypes.number) { ... // Add your code in here ... }

© www.soinside.com 2019 - 2024. All rights reserved.