Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > отлов нажатых клавишь на select's и поиск по списк


Автор: Diddy 7.4.2008, 15:32
ребят, это снова я! я обращался к 2 програмерам на js, пока идей у них нет! вариант такой: есть список, кликнуть по нему мышой, инажать пару клавишь - нужно чтобы выбрался элемента списка, в котором встречается такое сочетание набраных букв, в любом месте слова!

Автор: ksnk 7.4.2008, 15:38
Родной select окучить кроссброузерно, видимо, не удастся, очень уж у него хитрая обработка событий для разных брозеров, а вот если имитировать его div'ами, то можно накрутить всего, чего захочется...

Автор: Itsys 7.4.2008, 17:18
Можно select поместить внутрь diva - получить его с помошью innerHTML, обрезть <select></select> - останутся только <options> - обрезаешь его с помошью регулярного выражения - останутся только нужные options - и запихиваешь это обратно в div через innerHTML окружив обрезанными <select></select>.

Добавлено через 3 минуты и 1 секунду
Если я правильно понял, что ты хочешь сделать, то посмотри как это сделано http://www.yandex.ru/advanced.html поле регион.

Автор: Diddy 8.4.2008, 08:55
Itsys, ksnk, спасибо большое! но все гораздо проще (наверное)! мне нужно, чтобы селекс остался селектом, но когда кликаеш по нему мушкой -> он раскрылся -> я нажимаю любые 2 кнопки (их ввод не виден) -> выделяется первое слово, в котором встречается эти 2 буквы ( не обязательно сначала слова)!

Автор: IDVsbruck 8.4.2008, 15:45
Непонятна постановка вопроса.
Если в результате необходим вывод только одного слова, то зачем использовать селект? Имей себе массив слов, а в эдите вводи символы и получай слово. Либо делай специализированный элемент на базе дива и обрабатывай события.

Автор: Diddy 8.4.2008, 16:34
IDVsbruck, понимаю, что звучит ужасно ,  но такая задача! я уже сделал 2 разными способами, но нужно именно так, как я написал! меня самого это уже запарило!

Автор: Itsys 9.4.2008, 06:49
я боюсь, что именно так как ты написал и не получится smile, т.к. при изменении селекта он в любом случае свернется обратно в строку

Автор: Diddy 9.4.2008, 10:08
ну, впринципе, это нормально! пусть он сворачивается, но главное, чтобы слово выбралось нужное!
з.ы. я написал рабочую функцию по отлову нажатых клавишь, но столкнулся с проблемой - как мне определить русские буквы? буквы, отлавливаемые, только английские!

Автор: Itsys 9.4.2008, 23:00
либо путем эксперимента выясняй коды русских букв, либо поищи в инете - может где есть информация

Автор: Diddy 10.4.2008, 10:55
сделал это задание, только у меня на анлийском и поиск идет только по 1 букве, не знаю в чем фишка?!
Код

function catch_words (e)
{
    var word_id;
    var str2 = "";
    var word = "";
    var numcheck;
    
    
        if(window.event) 
        {
            word_id = e.keyCode;
        }
        else if(e.which) 
        {
            word_id = e.which;
        }
        
        word = String.fromCharCode(word_id);
        
        if(word.length >=1)
        {
            select=document.getElementById("select_1");
            for(var i=0; i<select.length; i++)
            {
                str2=select.options[i].innerHTML;
                if (str2.search(word)!=-1)
                {
                    //alert(str2);
                    select.options[i].selected=true;
                }
            }
        }
        
        numcheck = /\d/;
        return !numcheck.test(word_id);
        
    
    

}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)