Question

J'ai du mal à comprendre pourquoi le problème suivant apparaît.

J'ai une boîte d'entrée et je veux attacher une boîte Autocomplete à lui.

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

Ceci est le début de la fonction. Pas de problème ici. Ensuite, j'accroche onkeydown et onkeyup événements afin que je puisse montrer la boîte pendant que l'utilisateur frappe.

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

Jusqu'à présent, si bon. Tout fonctionne dans tous les navigateurs unique (IE, FF, Chrome, Safari) sur Windows et Linux, je reçois x, z sur chaque pression de touche, sauf Opera sous Linux si j'utilise l'entrée cyrillique (par exemple сдфг). Il onkeyup événement n'a même pas le feu.

Le système que j'utilise est Ubuntu 9.04 avec Opera 10.10.

P.S. Tout en tapant cette question, je l'ai essayé sur une autre machine avec ArchLinux, encore une fois avec Opera 10.10 et il fonctionne très bien. Aussi un collègue a laissé tomber une note qu'il ne fonctionne pas pour lui aussi sur Mac OS X 10.6 avec Safari, mais je ne peux pas communiquer avec lui pour identifier la version

Était-ce utile?

La solution

Selon quirksmode , la gestion de l'Opéra est cassé. Vous devez utiliser Opera sur la place keypress.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top