在textarea上使用keydown / up事件的jQuery trigger()

时间:2014-05-26 16:35:32

标签: javascript jquery html javascript-events

JSFiddle here - 使用console.log()。

window.evtqueue = [];

window.eventHold = function(e){
    console.log(e.held);
    if (typeof(e.held)==typeof(undefined)){
        e.held = 1;
        window.evtqueue.push(e);

        console.log(e.type+" - "+e.which);
        window.setTimeout(function(){
            console.log("Triggering: "+e.type+" = "+e.which);
            var evt = window.evtqueue.splice(0,1)[0];
            $('#edittext').trigger(evt);
        }, 1000);
        return false;
    } else {
        console.log("Event actually triggered!");
    }
}

$('#edittext').on('keydown keyup', window.eventHold)

我正在创建一个富文本编辑器,并且在快速击键与异步代码(这是我无法控制的)之间遇到了一些问题,因此,我决定创建一个事件队列。但是,我无法通过.trigger()获取已保存的事件,而且当我能够管理时,他们似乎无法触发默认设置。

我错过了什么?这是否需要绑定更多事件来实际触发默认值,例如按键?它是否失败,因为原始绑定事件事件返回false,尽管这是异步的?

1 个答案:

答案 0 :(得分:0)

是的,这是因为您在触发事件之前返回了错误

如果您返回false,则

event.isPropagationStopped() and event.isDefaultPrevented() is true

源代码显示,如果两者都为真,则触发方法将不执行任何操作