【问题标题】:Catch multiple onkeyup events from same text input从同一文本输入中捕获多个 onkeyup 事件
【发布时间】:2013-02-16 15:40:39
【问题描述】:

我正在为 dom 脚本创建一些逻辑,最终发现我需要在按键时执行多个方法的问题。似乎最后一个定义的onkeyup 是执行的,这里有一些代码:

第一种方法:

...var elements=$$('[id^='+table+']&[id$='+tableField+']');

elements.each(function filter(item) {
    
    //for each item 
    item.onkeyup = function() { ...

第二种方法:

...//for each referenced input    
for(var i=0, fields=htmlFieldElems.length;i<fields;i++){

   //set keyup event for involved fiels in the expression
   $(htmlFieldElems[i]).onkeyup = function() {...
        

可能会发生两种方法中的输入元素可能相同,并且在发生变化时都需要执行......那么处理这个问题的最佳方法是什么?

【问题讨论】:

    标签: javascript jquery jquery-events onkeyup


    【解决方案1】:

    这是我使用 jQuery 所遵循的。这是example

    $('#element').bind('customE',function(){
       // do some stuff
    });
    
    $('#element').bind('customE',function(){
       // do some other interesting stuff else use one event handler :-)
    });
    
    $('#element').bind('customE',function(){
       // still another
    });
    
    $('#element').on('keyup',function(){
        $('#element').trigger('customE');   
    });
    

    希望这会有所帮助..即使发布的其他答案也会有所帮助..但这很容易维护:-)

    【讨论】:

      【解决方案2】:

      在纯 javascript 中,您可以从 onkeyup 事件处理程序中调用多个方法,就像这样 ...

      item.onkeyup = function() {
          func1();
          func2();
          funcn();
      }
      

      如果您使用的是 jQuery 等框架,则可以继续添加事件,如下所示:

      $('#item').keyup(func1);
      $('#item').keyup(func2);
      $('#item').keyup(funcn);
      

      原型:

      $('foo').observe('keyup', function(event) {
          func1();
          func2();
          funcn();
      });
      

      【讨论】:

      • 我从来没有使用过原型,但是一个快速的谷歌建议如下: $('foo').observe('keyup', function(event) { func1(); func2(); funcn ();});
      • $('foo').observe('keyup', function(event) { func1(); }); $('foo').observe('keyup', function(event) { func2(); funcn(); });这会执行这 3 个功能吗?
      • 是的!你为什么不试试呢。从实验中学习的最佳方式!
      • 是的,似乎使用观察它会将方法添加到事件中,因此您可以使用 keyup 事件多次调用观察。谢谢
      猜你喜欢
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多