【问题标题】:jQuery: Get last change in input fieldjQuery:获取输入字段的最后更改
【发布时间】:2016-05-28 10:22:55
【问题描述】:

我有一个输入字段,我需要弄清楚用户输入的最后一个字符是什么。这可能是输入中的最后一个字母,但也可能是输入字段中的任何位置。

我需要这样的东西:

    var timerid;    
    $("#input").on("propertychange change click keyup input paste",function(e){
        var value = $(this).val();
        if($(this).data("lastval")!= value){
            $(this).data("lastval",value);

            //console.log(difference between lastval and value or something similar to get the last character the user types in the input)

            clearTimeout(timerid);
            timerid = setTimeout(function() {

                //change action
                console.log(value);               
                input_array(value) 

            },400);

        };
    });

【问题讨论】:

  • Offtopic:你不希望出现if lastval != value,否则如果你一直按同一个键,你会得到同一个键的多个(仍然是去抖动的,但是多个)console.logs,而不是只是最后一个。
  • 如果用户粘贴整个单词,您希望在input_array 中存储什么?或者他们选择一些文本并按 ctrl-x。除了“最后一次更改”之外,您可能希望更清楚地定义您的要求。最后输入的字符?那为什么你的例子中有propertychangepaste
  • 谢谢,这是用户在这里输入的最后一个字符。但是输入也可以通过其他方式使用,比如粘贴一些东西。
  • 您不会得到单一的“处理所有情况”解决方案,因为它们的工作方式不同 - 例如,keypress 是按下的键,paste 是粘贴的 (stackoverflow.com/questions/11605415/…)。如果它是为了某种撤消/重做/重播,那么您还需要知道文本框中的位置和任何当前选择的字符(例如选择第一个单词,然后按“a”删除整个第一个单词,你会只记录“a”被按下)。也许您最好的选择是存储前后的“差异”。
  • 没有更多关于需求的细节,真的帮不上忙

标签: jquery


【解决方案1】:

另一种方式可能是.key

请注意,它不受所有浏览器的支持,see compatibility details

$('input').on('keydown', function(event) {
    console.log(event.key);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type='text' />

【讨论】:

    【解决方案2】:

    只需使用keydown 事件和String.fromCharCode 方法

    $('input').on('keydown', function(event) {
        $('#key-entered').html(String.fromCharCode(event.keyCode));
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <input type='text' />
    
    <p id='key-entered'>

    【讨论】:

    • 阅读您的答案后,我发现它会返回大写字母很奇怪。对于任何其他需要解释的人:显然是how keydown works
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-01
    • 2014-12-26
    相关资源
    最近更新 更多