Проблема с onkeypress
Привет всем.
Столкнулся в сайте с такой проблемой. Есть текстовое input поле, в которое вводится название материала. Вручную его отредактировать возможности нет, но нужно сделать так, чтобы при вводе каждой буквы (onkeypress) срабатывала функция loadCheck(); Как это осуществить с помощью скрипта, если известно id поля = "nwF1" :help: :( |
на jQuery можно реализовать так
<script type="text/javascript" src="http://yandex.st/jquery/1.4.4/jquery.min.js"></script> <input id="nwF1" type=text /> <script> var TxtLength=0; $("#nwF1").bind('mouseout mousemove keydown keypress keyup',function(e){ var ThisLength=$(this).val().length; var Delta=ThisLength-TxtLength; var DeltaQadr = Delta*Delta; if(DeltaQadr){ TxtLength=ThisLength;alert("Строка изменилась") //loadCheck(); //Вызов чего-то } }) </script> |
Спасибо большое! Реализовал! )
|
<input type="text" id="nwF1"> <script> document.querySelector('#nwF1').addEventListener( 'input', function(){ alert( this.value ) }); </script> |
<div id="div"></div> <input id="inp"> <script> window.onload = function () { var div = document.getElementById('div'); var inp = document.getElementById('inp'); inp.onkeyup = function () { div.innerHTML = inp.value; } } </script> |
bes,
вставка - удаление символов может быть и по правой кнопке мыши - что и в итоге приводит либо к длиннокоду на jQuery либо к EventListener |
|
Deff, не совсем понял, о чём идёт речь в данной ситуации, но обработчик onkeyup позволяет сразу использовать всё введённое в input содержимое в отличие от обработчика onkeypress, который не может задействовать последний введённый символ.
|
bes,
если я вставлю правой кнопкой мышки текст из буфера событие не сработает. |
bes,
Вставь или удали часть слова по правой кнопки мыши в своём примере (или блокируй её у пользователя (мну без наезда, - просто приходицо собак есть из-за начальства |
Drimogemon,
Cоврал - onfocus - недостаточно |
ребят, вы что поехавшие? я же показал вам как делать о чем речь вообще?
какие фокусы какие кейпрессы!! че вы несете вообще? или "нубы советуют нубам"? |
Drimogemon,
Ну дык твой Вариант уже оценили - есть интерес свой Вариант довести... чо как будто сам себя не заешь, свой говнокод завсегда ближе к телу, не смотря на рубашки от Версаче |
можно onchange или onblur, сработает при потере фокуса
Цитата:
|
для этих целей и было введено событие oninput которое срабатывает при любом изменении поля ввода, будь то хоть мышь, будь то хоть клава.
A для старых браузеров таких как ИЕ можно юзать так: <!DOCTYPE html> <html> <head> <script> function onInput( elem, callback ) { if ( elem.addEventListener ) { if ( "oninput" in elem ) { // для HTML5 браузеров elem.addEventListener( 'input', callback, false ); } else { // для HTML4 браузеров elem.addEventListener( 'keyup', callback, false ); } } else if ( elem.attachEvent ) { // для ИЕ < 9 elem.attachEvent( 'onkeyup', function() { callback.call( elem, window.event ); }); elem.attachEvent( 'onpaste', function() { setTimeout( function() { callback.call( elem, window.event ); }, 1); }); } } window.onload = function() { onInput( document.getElementById('nwF1'), function() { alert( this.value ); }); } </script> </head> <body> <input type="text" id="nwF1"> </body> </html> |
devote, о том и речь, что проще: сделать кроссбраузерный addEventListener или навесить лишний обработчик, например, onchange или onblur (элемент фокус всё равно рано или поздно потеряет)
|
:cray: У devote, зачетный код походу, своё так и не найду -
- нашел - при фокусе тупо setInterval |
Цитата:
|
Часовой пояс GMT +3, время: 13:06. |