2015-02-10 98 views
0

逻辑上防止默认不就主要up.But工作我一定要实现类似的东西...防止默认onkeyup事件在JavaScript

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

如果我使用键不放,我不能像跟踪用户的价值可以放置一个字符在digit.So的中间是有没有办法实现这个...

+2

使用['oninput'](https://developer.mozilla.org/en-US/docs/Web/Events/input)代替'onkeyup'。 – Teemu 2015-02-10 12:44:14

+0

谢谢你......但是apex页面不支持这个属性 – rajasekhar 2015-02-10 13:07:28

+0

在你的问题中没有关于“apex”的内容。它是什么? – Teemu 2015-02-10 13:08:57

回答

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

演示这里:​​