首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ie11 :仅使用数字输入

ie11 :仅使用数字输入
EN

Stack Overflow用户
提问于 2018-03-26 20:14:31
回答 1查看 1.2K关注 0票数 0

我需要我的输入只接受数字。我有:

代码语言:javascript
复制
<input type="number" pattern="[0-9]*" />

如果我开始输入字母,当它失去焦点时,输入将被清空,但如果我输入"2blah“,它将不会被清空。有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2019-07-19 23:40:42

仅允许0-9数字、数字板数字、箭头、BackSpace、制表符、删除以及Ctrl + C、Ctrl + V、Ctrl + A。只允许一个点。如果模糊事件上的最后一个字符是点,则将其移除。

代码语言:javascript
复制
element.on('keydown', function(e) {
    var arrowsKeyCodes = [37, 38, 39, 40];
    var numPadNumberKeyCodes = [96, 97, 98, 99, 100, 101, 102, 103, 104, 105];
    var dots = [110, 190];
    var tabBackDel = [8, 9, 46];
    var acv = [65, 67, 86];

    // Allow only one dot.
    if (e.target.value.indexOf('.') !== -1 && dots.indexOf(e.keyCode) !== -1) {
        event.preventDefault();
    }

    // allow only [0-9] number, numpad number, arrow,  BackSpace, Tab, Del
    // Ctrl + C, Ctrl + V, Ctrl + A
    if (
        (e.keyCode < 48 &&
            arrowsKeyCodes.indexOf(e.keyCode) === -1 || e.keyCode > 57 &&
            numPadNumberKeyCodes.indexOf(e.keyCode) === -1 &&
            dots.indexOf(e.keyCode) === -1
        ) &&
        tabBackDel.indexOf(e.keyCode) === -1 &&
        (e.ctrlKey === false || e.ctrlKey === true && acv.indexOf(e.keyCode) === -1)
    ) {
        e.preventDefault();
    }
});

element.on('blur', function(e) {
    var value = e.target.value;
    if (value.substring(value.length - 1) === '.')
        e.target.value = value.substring(0, value.length - 1)
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49491241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档