防止javascript中的默认onkeyup事件

prevent default onkeyup event in javascript

本文关键字:onkeyup 事件 默认 javascript 防止      更新时间:2023-09-26

逻辑上防止默认值在键上不起作用。但我必须取得这样的成就。。。

我必须制作一个文本字段,就像当用户输入值时,它必须检查它是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/