Как сделать поиск в поле по части введенных данных

danneo

Честный
Регистрация
13 Ноя 2007
Сообщения
1.526
Реакции
121
В поле нужно вводить номер (поиск по полю id) или название (поиск по полю title), и сразу осуществляется поиск в виде выпадающего меню, пользователь выбирает из списка внизу варианты, оно вводится в поле.
Пример, как в поиске CMS DLE и т.д.
Может быть есть уже готовые примеры?
js не знаю, точнее, примерно понимаю как работает, но очень примерно, чтобы сделать снуля.
 
ajax POST-запрос к файлу, который возвращает HTML код select с option (берет из БД)...ну и позиционирует в нужном
могу скинуть свой пример:

Код:
    var msgform = $("#sendmessage");
    var flag_s = false;
    var to_contact_text = '';
    var to_contact_text_last = '';
 
    msgform.children("input[name='to_contact']").keyup(function() {
        to_contact_text = $(this).val();
        if(flag_s === false && to_contact_text != '') {
            flag_s = true;
            setTimeout(function() {
                flag_s = false;
                if(to_contact_text != to_contact_text_last) {
                    to_contact_text_last = $("#sendmessage input[name='to_contact']").val();
                    getNames(to_contact_text);
                }
            }, 500);
        }
    });
 
    function getNames(user_name) {
        var data = [{name: 'name', value: user_name}];
        data.push({name: 'action', value: 'searchUsers'});
        $("#sendmessage div.ajax-loader-small-search").fadeIn(200, function() {
            $.post(    "/ajax/ajax.php", data)
                .fail(
                    function()
                    {
                        alertify.error("Произошла ошибка AJAX запроса. Обратитесь к администратору.");
                    }
                )
                .done(
                    function(data)
                    {
                        data = JSON.parse(data);
                        if (data.ajax)
                        {
                            $("#search-result").fadeIn(100).html(data.html);
                        }
                        else
                        {
                            if(data.errorField)
                                alertify.log(data.details);
 
                        }
                    }
                );
            $(this).fadeOut(200);
        });
    }
 
Назад
Сверху