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

+0

спасибо ... но apex страница не поддерживает этот атрибут – rajasekhar

+0

В вашем вопросе ничего не сказано о «вершине». Что это? – Teemu

ответ

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/

Смежные вопросы