Categorias

Pesquisar opções em combos ao digitar palavras

Um dos recursos muito comuns em aplicações conhecidas como Desktop era a de ao digitar dentro de uma caixa de seleção (ou ComboBox) a seleção das opções iriam sendo marcadas de acordo com o texto digitado.

Por exemplo:

Ao digitar a letra “A” a opção que inicia com esta letra será marcada e após digitar, por exemplo, “G” a opção que inicia com “AG” será marcada, e assim por diante

Hoje na maioria dos browsers não este tipo de recurso, a letra digitada será sempre utilizada para marcar a opção que inicia com ela (com exceção do Firefox que suporta somente 2 letras).

Com este código é possível simular este recurso muito utilizado em aplicações Desktop, além de simplificar em muito a pesquisa de opções em ComboBoxes com muitas opções.

ARQUIVO: cbboxSearch.js

var _str = "";
var _timeout = 0;

function cbboxSearch(sel, e) {
    var i=0, c=true;
    _str = _str + String.fromCharCode(e.keyCode);
    _str = _str.toLowerCase();
    while (c) {
        var textOpt = sel.options[i].text.toLowerCase();
        var strOpt = textOpt.substr(0, (_str.length));
        if (strOpt == _str) {
            sel.options[i].selected = true;
            c = false;
        }
        if (i >= (sel.options.length - 1)) {
            c = false;
        }
        i++;
    }
    clearTimeout(_timeout);
    _timeout = setTimeout("cbboxSearchRestart()", 2000);
}

function cbboxSearchRestart() {
    clearTimeout(_timeout);
    _str = "";
}

Arquivo: Página HTML