【问题标题】:prevent default onkeyup event in javascript防止javascript中的默认onkeyup事件
【发布时间】:2025-11-29 01:50:01
【问题描述】:

从逻辑上防止默认值不适用于上键。但我必须实现类似的东西......

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

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

【问题讨论】:

  • 使用oninput 而不是onkeyup
  • 谢谢...但顶点页面不支持此属性
  • 您的问题中没有关于“顶点”的内容。这是什么?
  • 对不起,我忘了提到我试图将它添加到 salesforce 顶点页面中......但是当我在普通 html 中使用它时,它的工作非常好......但是顶点页面不支持这个 oninput
  • 好吧,那么您必须使用 RegExp 操作输入的值,并重写输入的整个值,而不是试图阻止用户输入他喜欢的任何内容。跨度>

标签: javascript jquery html onkeydown onkeyup


【解决方案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/

【讨论】:

    最近更新 更多