javascript - 防止 JavaScript 中默认的 onkeyup 事件

标签 javascript jquery html onkeydown onkeyup

逻辑上防止默认值在按键时不起作用。但我必须实现类似的目标......

我必须创建一个文本字段,就像当用户输入值时,它必须检查它是 3 位数字,并且应该允许最大 2 个小数精度(例如:123.99,24,56)。所以我想读取这些值并调用JavaScript 函数,如果不适合就必须阻止它。

如果我使用按键,我无法跟踪该值,就像用户可能在数字中间放置一个字符一样。那么有什么方法可以实现这一点...

最佳答案

这有效:

var elt = document.getElementById('test');

function saveLastInput(e) {
    e.target.setAttribute('last-input', elt.value);
}

function forbidNonNumbers(e) {
    var elt = e.target,
        newValue = elt.value,
        lastInput,
        newValueIsForbidden = false;

    if (newValue !== '' && !/^[0-9]{1,3}(\.[0-9]{0,2})?$/.test("" + newValue)) {
        newValueIsForbidden = true;
    }

    if (newValueIsForbidden) {
        lastInput = elt.getAttribute('last-input');
        elt.value = lastInput;
    }
}

elt.addEventListener(elt.oninput ? 'input' : 'keyup', forbidNonNumbers); 
elt.addEventListener(elt.oninput ? 'input' : 'keyup', saveLastInput); // Insert this line last!

在 Chrome、FF、IE 11 中测试

此处演示:http://jsfiddle.net/hc5fyLyz/1/

关于javascript - 防止 JavaScript 中默认的 onkeyup 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28431846/

相关文章:

javascript - js 页面重定向按钮提交不适用于 IE 或 Edge

javascript - 来自json的 Angular 日期格式

javascript - 在 JavaScript 中自动从字符串中删除 '&' 符号

javascript - 使用 ajax 填充 html 容器

javascript - 如何获取触发更改事件的 Bootstrap slider 的父级

javascript - 函数提前触发

jQuery:随机化字符串中的单词?

javascript - 如何为我的悬停功能设置 jQuery 动画?

html - 工具提示的最大宽度在 Firefox 38 中不起作用,但在 Chromium 中起作用

html - 如何在 div 的左侧和右侧设置 HR 样式?