2014-10-10 5 views
0

Рассмотрим следующий пример:событие выстрел, когда значение входного сигнала изменяется

<input type="text" id="foo" /> 

мне нужно, что, когда значение input.#foo изменяется, без размытия, он выстрелил мой случай. Здесь возникает проблема: я не могу использовать события onkey, потому что вход динамически принимается с помощью виртуальной HTML-составленной клавиатуры.

я могу легко сделать, с истинной клавиатуры:

document.querySelector("#foo").addEventListener('keypress', function() { 
    // Implementation 
}); 

В W3C рекомендует использовать onchange, но onchangeтолько работы после того, как blur событие происходит. Мне нужно сочетание onkeypress, чтобы быть динамичным, по времени изменить, и onchange, чтобы узнать, когда он изменится. Вы можете увидеть это: http://jsfiddle.net/zuq733La/

+1

попробовать https://developer.mozilla.org/en/docs/Web/API/MutationObserver – loveNoHate

+0

я не могу использовать KeyUp. У меня просто нет клавиатуры для запуска события keyup. :) –

+0

http://jsfiddle.net/victor_007/zuq733La/2/ использовать 'textInput' –

ответ

0

JS Fiddle

использование textInput будет проверять для каждого персонажа добавил

document.querySelector("#foo").addEventListener('textInput', function() { 
    alert('Value changed!'); 
}); 
0

единственный способ, которым я могу думать (без использования blur, change, keypress, keyup или keydown события) использует setInterval(): DEMO

var value=$('#foo').val(); 
setInterval(function(){ 
    if(value!=$('#foo').val()){ 
     value=$('#foo').val(); 
     //here you need to write what will happen if the value is changed 
    } 
},50); 

в Демонстрационный может видеть, что даже если вы копируете и вставляете текст (используя только вашу мышь, даже не размывая ввод), срабатывает событие.

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