Javascript:从同一文本输入中捕获多个onkeyup事件

时间:2013-02-16 15:40:39

标签: javascript javascript-events onkeyup

所以我正在为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() {...

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

2 个答案:

答案 0 :(得分:2)

这就是我使用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');   
});

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

答案 1 :(得分:1)

在纯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();
});