【问题标题】:Better way to inspect a input form with jquery使用 jquery 检查输入表单的更好方法
【发布时间】:2012-10-24 23:54:11
【问题描述】:

我知道检查表单的最快方法是.keyup().keydown(),但如果用户复制/粘贴一些文本呢?将错过 Tha 事件,但输入中的内容可能已更改。

如果用户按下(或让)例如该事件将触发查询的 alt 键(在我的情况下无用)。

是否有类似“文本更改”但实时检查的事件处理程序?类似于 onchange,但作为处理程序。

【问题讨论】:

  • 你可以使用 setInterval() 方法并每隔 n 毫秒测试一次。
  • 您想在途中监控更改并格式化吗?如果不是,那为什么不在blur() 上进行分析呢?
  • @Grzegorz 我想像预输入效果一样监控变化,但更有效(没有不必要的按键,但有复制/粘贴菜单选项。我想不出任何其他可能的变化文本输入)
  • 在所有事件上都这样做,change keyup focus blur 这应该适用于所有事情,甚至复制/粘贴。我在my plugin 中这样做了,效果很好。
  • 这是我发现的绝对最好的方法:stackoverflow.com/questions/574941/…

标签: jquery forms events event-handling onchange


【解决方案1】:
(function($){
    $.fn.oneinput = function(callback) {        
        function testInput(){ 
            var tb = jQuery(this);
            var currentValue = tb.val();
            if (tb.data("lastInput") !== currentValue ) {
                tb.data("lastInput",currentValue );
                if(callback) { 
                    callback.call(this) 
                };
            }
            return this;
        }    
        $(this).bind("keyup input paste", testInput);
    };
}(jQuery));

$('input').oneinput( function(){ console.log(this.value); });

【讨论】:

    【解决方案2】:

    您始终可以使用 bind() JQuery 方法检查用户是否正在复制/粘贴文本。 Stack Overflow 上有一个类似的问题,可以在这里找到:How do you handle oncut, oncopy, and onpaste in jQuery?

    【讨论】:

      猜你喜欢
      • 2021-04-06
      • 1970-01-01
      • 2013-11-09
      • 2013-11-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-05
      • 2013-10-06
      • 2012-05-18
      相关资源
      最近更新 更多