Событие изменения текстового поля jQuery

У элемента ввода текста нет события изменения? Когда я прикрепляю обработчик события изменения к текстовому вводу, он не запускается. Клавиатура запускается, но ее недостаточно для обнаружения изменения, поскольку, очевидно, существуют другие способы ввода текста во входные данные.

22
задан jcvandan 26 May 2011 в 14:09
поделиться

6 ответов

Нет реального решения этого вопроса - даже в ссылках на другие вопросы, приведенные выше В конце концов я решил использовать setTimeout и вызвать метод, который проверяет каждую секунду! Не идеальное решение, но работающее решение и код, который я вызываю, достаточно просты, чтобы не влиять на производительность, вызываясь постоянно.

function InitPageControls() {
        CheckIfChanged();
    }

    function CheckIfChanged() {
        // do logic

        setTimeout(function () {
            CheckIfChanged();
        }, 1000);
    }

Надеюсь, что это поможет кому-то в будущем, поскольку кажется, что нет надежного способа добиться этого с помощью обработчиков событий ...

4
ответ дан 29 November 2019 в 03:33
поделиться

Я обнаружил, что это работает:

$(document).ready(function(){
    $('textarea').bind('input propertychange', function() {
        //do your update here
    }

})
22
ответ дан 29 November 2019 в 03:33
поделиться

Спецификация HTML4 для элемента <input> определяет наличие следующих событий сценария:

onfocus, onblur, onselect, onchange, onclick, ondblclick, onmousedown, onmouseup , onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup

вот пример, который связывает все эти события и показывает, что происходит http://jsfiddle.net/pxfunc/zJ7Lf/

Я думаю, что вы можете отфильтровать, какие события действительно подходят для вашей ситуации, и определить, какое текстовое значение было до и после события, чтобы определить изменение

.
29
ответ дан 29 November 2019 в 03:33
поделиться

Событие изменения срабатывает только после того, как вход теряет фокус (и был изменен).

14
ответ дан 29 November 2019 в 03:33
поделиться

Вы можете добиться этого:

 $(document).ready(function(){              
     $('#textBox').keyup(function () {alert('changed');});
 });

или с изменением (обработайте копирование вставкой правой кнопкой мыши):

 $(document).ready(function(){              
     $('#textBox2').change(function () {alert('changed');});
 });

Вот Демо

3
ответ дан 29 November 2019 в 03:33
поделиться
$('#input').on("input",function () {alert('changed');});

работает для меня.

1
ответ дан 29 November 2019 в 03:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: