在javascript中防止默认的onkeyup事件

时间:2015-02-10 12:35:27

标签: javascript jquery html onkeydown onkeyup

从逻辑上讲,防止默认设置无法在按键上启用。但我必须实现类似的功能......

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

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

1 个答案:

答案 0 :(得分:1)

这有效:

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/