Как обнаружить текстовое поле изменилось

Он будет равен b.

Оператор запятой имеет более низкий приоритет, чем назначение.

406
задан Yuck 3 February 2014 в 20:45
поделиться

5 ответов

Этот Код обнаруживает каждый раз, когда содержание текстового поля изменилось пользователем и изменило кодом JavaScript. $myText var = jQuery (" #textbox");

$myText.data("value", $myText.val());

setInterval(function() {
    var data = $myText.data("value"),
    val = $myText.val();

    if (data !== val) {
        console.log("changed");
        $myText.data("value", val);
    }
}, 100);

'

0
ответ дан 22 November 2019 в 23:30
поделиться

Я хотел бы спросить, почему вы пытаетесь определить, когда содержимое текстового поля изменилось в реальном времени ?

Альтернативой может быть установка таймера (через setIntval?) и сравните последнее сохраненное значение с текущим, а затем сбросьте таймер. Это гарантировало бы обнаружение ЛЮБЫХ изменений, будь то вызванные клавишами, мышью, каким-либо другим устройством ввода, которое вы не рассматривали, или даже изменением значения JavaScript (другая возможность, о которой никто не упоминал) из другой части приложения.

2
ответ дан 22 November 2019 в 23:30
поделиться

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

Ага. Вам не обязательно использовать замыкания, но вам нужно будет запомнить старое значение и сравнить его с новым.

Однако! Это по-прежнему не улавливает каждое изменение, потому что есть способы редактирования содержимого текстового поля, которые не требуют нажатия клавиш. Например, выделите диапазон текста, а затем щелкните правой кнопкой мыши. Или перетаскивая его. Или перетащите текст из другого приложения в текстовое поле. Или изменить слово через проверку орфографии в браузере. Или ...

Итак, если вы должны обнаруживать каждое изменение, вы должны его опрашивать. Вы можете window.setInterval проверять поле на соответствие его предыдущему значению каждую (скажем) секунду. Вы также можете связать onkeyup с той же функцией, чтобы изменения, которые вызваны нажатием клавиш, отражались быстрее.

Громоздко? Да. Но это так или просто сделайте это обычным способом HTML onchange и не пытайтесь мгновенно обновить.

21
ответ дан 22 November 2019 в 23:30
поделиться

рассматриваете ли вы возможность использования события изменения ?

$("#myTextBox").change(function() { alert("content changed"); });
1
ответ дан 22 November 2019 в 23:30
поделиться

Используйте событие onchange в HTML / стандартном JavaScript.

В jQuery это событие change () . Например:

$ ('element'). Change (function () {// что-то делаем});

EDIT

После прочтения некоторых комментариев, что насчет:

$(function() {
    var content = $('#myContent').val();

    $('#myContent').keyup(function() { 
        if ($('#myContent').val() != content) {
            content = $('#myContent').val();
            alert('Content has been changed');
        }
    });
});
68
ответ дан 22 November 2019 в 23:30
поделиться
Другие вопросы по тегам:

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