YUI自动完成:粘贴后搜索?

时间:2009-08-18 12:01:11

标签: javascript autocomplete yui copy-paste

我正在使用YUI中的自动完成小部件来实现实时搜索。但是,在键入搜索文本时它可以正常工作,但在将文本粘贴到字段时无法工作。什么是启动粘贴自动完成的正确方法?在文档中没有找到任何内容...

编辑:粘贴不是Ctrl-V,它通常是从上下文菜单中“粘贴”。 YUI会对按键做出反应,但如果鼠标粘贴任何内容则不会。

3 个答案:

答案 0 :(得分:3)

我们已经扩展了YUI的自动完成小部件,并以这种方式处理上下文菜单中的粘贴:

YAHOO.util.Event.on(input, 'paste', function(e, autocomplete) {
    // We're interested in the value of the input field after text is pasted into
    // it instead of the pasted text because the autocomplete proposals are based 
    // upon the field's whole value. The paste event happens before the input 
    // field has been updated so we need to wait until after this event has been 
    // handled to check the value of the input field.
    window.setTimeout(function() {
        if (autocomplete._sInitInputValue !== autocomplete.getInputEl().value) {
            autocomplete.sendQuery(autocomplete.getInputEl().value);
        }
    }, 1);
}, this);

其中this是自动填充小部件。

答案 1 :(得分:0)

也许在关键事件中,你可以检测到他们是否在按住ctrl时按下了v。如果有,则执行sendQuery('query ='+ textInput.value);

答案 2 :(得分:0)

修改

这是一个兼容性表,显示哪些浏览器允许您订阅粘贴事件。

http://www.quirksmode.org/dom/events/cutcopypaste.html

这是他的测试页面,您可以在其中查看如何订阅活动。

http://www.quirksmode.org/dom/events/tests/cutcopypaste.html

我想你可以使用YUI&赞成订阅然后让你的回调是这样的:

function() { 
    autoCompleteObject.sendQuery(autoCompleteElement.value);
}

注意浏览器不兼容性,看起来有些人会对事件进行奇怪的实现。