如何检测文本框的内容已更改

2022-08-29 23:16:11

我想检测文本框的内容何时发生更改。我可以使用keyup方法,但这也会检测不生成字母的击键,如箭头键。我想到了使用keyup事件执行此操作的两种方法:

  1. 明确检查按下的键的 ascii 代码是否为字母\退格符\删除
  2. 使用闭包来记住击键之前文本框中的文本,并检查此文本是否已更改。

两者看起来都有点麻烦。


答案 1

开始观察“输入”事件而不是“变化”。

jQuery('#some_text_box').on('input', function() {
    // do your stuff
});

...这很好,很干净,但可以进一步扩展到:

jQuery('#some_text_box').on('input propertychange paste', function() {
    // do your stuff
});

答案 2

在 HTML/标准 JavaScript 中使用 onchange 事件。

在 jQuery 中,这是 change() 事件。例如:

$('element').change(function() { // do something } );

编辑

在阅读了一些评论之后,怎么样:

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

    $('#myContent').keyup(function() { 
        if ($('#myContent').val() != content) {
            content = $('#myContent').val();
            alert('Content has been changed');
        }
    });
});