【问题标题】:Jquery Event Trigger Keyboard SimulationJquery 事件触发键盘模拟
【发布时间】:2011-06-01 10:11:35
【问题描述】:

我正在做一个最小的例子http://jsfiddle.net/PSYCKIC/SQZVH/1/

不能不让它工作,但这个想法是模拟键盘事件作为适用于每个浏览器(Firefox、Safari、Chrome、IE)的 keypress、keydown 或 keyup。

不知道为什么代码不工作,任何想法我该怎么做?

【问题讨论】:

    标签: jquery events triggers keyboard


    【解决方案1】:

    这是目前适用于 Chrome 和 Firefox 的解决方案,仍然需要检查 Opera 和 IE 是否有效

    // put cursor and input text in correct position
    
    function setCaretPosition(elem, caretPos) {
        if (elem != null) {
            if (elem.createTextRange) {
                var range = elem.createTextRange();
                range.move('character', caretPos);
                range.select();
            }
            else {
    
                if (elem.selectionStart) {
                    elem.setSelectionRange(caretPos, caretPos);
                    elem.focus();
    
                    // Workaround for FireFox overflow no scroll problem
                    if ($.browser.mozilla) {
    
                        // Trigger a "space" keypress.
                        var evt = document.createEvent("KeyboardEvent");
                        evt.initKeyEvent("keypress", true, true, null, false, false, false, false, 0, 32);
                        elem.dispatchEvent(evt);
    
                    }
                    // for webkit 
                    if ($.browser.webkit || $.browser.msie) {
                        var te = document.createEvent('TextEvent');
                        // Trigger a "space" keypress.
                        te.initTextEvent('textInput', true, true, window, ' ');
                        elem.dispatchEvent(te);
                    }
    
                }
                else
                    elem.focus();
            }
        }
    }
    

    【讨论】:

    • 即使是正确的答案,也不确定是 Opera 还是 Ie Working。
    【解决方案2】:
    $("#test").trigger(event.type);
    

    【讨论】:

    • 你测试了吗?对于我不工作,我在 Mac OS 中使用 firefox 3.6。不确定这是否是问题所在。
    • 您到底想达到什么目的?事件会触发,但如果您没有将事件绑定到输入,您将不会看到太多。
    • updated link 包含一个事件绑定到输入,然后在触发您创建的事件时调用该事件。
    • 我想把 event.keyCode = 65; (字符“a”)在输入中。像这个解决方案一样,不幸的是它只适用于 Firefox:stackoverflow.com/questions/686053/…
    • 谢谢,这个例子正在工作。可能我的解释不太好。
    猜你喜欢
    • 2011-03-06
    • 2013-09-22
    • 2011-05-19
    • 2012-10-26
    • 2016-08-30
    • 1970-01-01
    • 2010-12-26
    • 2015-08-21
    • 1970-01-01
    相关资源
    最近更新 更多