1

我很难理解为什么会出现以下问题。

我有一个输入框,我想给它附加一个自动完成框。

function input_set_autocomplete_to(obj)
{
    if( obj.type != "text" ) { return; }
    if( obj.getAttribute("rel") != "autocomplete" ) { return; }
    obj.setAttribute("autocomplete", "off");
    obj.setAttribute("uniqindex", Math.round(Math.random()*99999));
    obj.onfocus = function() {
        input_hide_autocompletes();
    };

这是函数的开始。这里没有麻烦。然后我挂钩 onkeydown 和 onkeyup 事件,以便在用户键入时显示该框。

    obj.onkeydown = function(e) {
        console.log('x');
    }
    obj.onkeyup = function (e) {
        console.log('z');
    }

到目前为止,一切都很好。一切都适用于 Windows 和 Linux 上的每个浏览器(IE、FF、Chrome、Safari),如果我使用西里尔文输入(例如 сдфг),我在每次按键时都会得到 x、z,除了 Linux 中的 Opera。onkeyup 事件甚至不会触发。

我使用的系统是 Ubuntu 9.04 和 Opera 10.10。

PS 在输入这个问题时,我在另一台使用 ArchLinux 的机器上尝试了它,再次使用 Opera 10.10,它工作正常。还有一位同事丢下一张纸条,说在带有 Safari 的 MacOS X 10.6 上它也不适用于他,但我无法联系他以识别版本

4

1 回答 1

1

根据quirksmode,Opera keyup 处理被破坏了。您需要在 Opera 上使用 keypress。

于 2010-05-11T15:33:01.887 回答