从逻辑上讲,防止默认设置无法在按键上启用。但我必须实现类似的功能......
我必须创建一个文本字段,例如当用户输入值时,必须检查它是否为3位,应该允许最大2分数精度(例如:123.99,24,56)。所以我想读取值并调用一个JavaScript函数,如果它不适合,必须防止它。
如果我使用按键,我无法跟踪值,就像用户可能会在数字中间放置一个字符。那么有什么方法可以实现这个...
答案 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中测试