2015-02-10 129 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

演示這裏:​​