Проблема с 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, время: 08:24. |