Ajax Поиск по типам пользователей

#javascript #php #ajax

#javascript #php #ajax

Вопрос:

У меня есть функция поиска, которую я пытаюсь реализовать. Я хотел бы, чтобы пользователь мог вводить свой «Поиск», и ajax срабатывает при вводе пользовательских типов, чтобы помочь с поиском их «Поиска».

Я хотел бы, чтобы пользователь мог вводить свой «Поиск», и ajax срабатывает при вводе пользовательских типов, чтобы помочь с поиском их «Поиска».

Это то, что у меня есть; Это работает, но требует, чтобы пользователь нажал поиск.

                     jQuery(document).ready(function($) {
                        // Let us trigger the search if the user clicks on the search button.
                        $('.btnSearch').click(function(){
                            makeAjaxRequest();
                        });
                        // Let us trigger the search if the user submit the form by an enter.
                        $('form').submit(function(e){
                                e.preventDefault();
                                makeAjaxRequest();
                            return false; 
                        });

                        function makeAjaxRequest() {
                            $.ajax({
                                url: 'searchAction.php',
                                data: {name: $('input#name').val()},
                                type: 'get',
                                success: function(response) {
                                    $('table#resultTable tbody').html(response);
                                }
                            });
                        }
                    });
  

Комментарии:

1. И вопрос в том?

2. Я хотел бы, чтобы пользователь мог вводить свой «Поиск», и ajax срабатывает при вводе пользовательских типов, чтобы помочь с поиском их «Поиска». В этом вопрос. Как мне это сделать? Что мне нужно сделать?

3. $(input).change(fn …) должен обнаруживать изменения

Ответ №1:

Вам нужно привязать вашу функцию к keyup -событию поля ввода.

Добавляем следующую строку кода внутри $(document).ready() -функции

 $( "#name" ).keyup(makeAjaxRequest);
  

может помочь вам.

Чтобы выполнять AJAX-запрос только для минимальной длины трех символов в поле ввода, вы можете изменить свою makeAjaxRequest() функцию следующим образом:

 function makeAjaxRequest() {
  if($('input#name').val().length > 2) {
    $.ajax({
      url: 'searchAction.php',
      data: {name: $('input#name').val()},
      type: 'get',
      success: function(response) {
        $('table#resultTable tbody').html(response);
      }
    });
  }
}
  

Комментарии:

1. Вы не могли бы изменить мой операционный код, чтобы отразить ваши предложения. Я не понимаю, что мне нужно было бы сделать, чтобы «привязать вашу функцию». Я знаю PHP, но еще не настолько хорошо изучил javascript / ajax. (Учусь сейчас: D )

2. Просто добавьте строку кода в свой скрипт, например, прямо над $('.btnSearch').click(function(){...}

3. Потрясающе! Работает!. Как бы мне ограничить запуск поиска до тех пор, пока не будут введены 3 символа или более?

4. @Levi — я только что ответил на этот самый вопрос. смотрите мой пост.

5. Спасибо, однако это то, что мне нужно. Однако мне нравится ваш подход.

Ответ №2:

Вероятно, вы не захотите выполнять поиск в keyup, поскольку для этого пользователю потребуется выполнить 5 вызовов ajax для поиска слова «Привет».

Рассмотрим панель поиска Google: Он автоматически покажет результаты поиска, когда посчитает, что знает, чего вы хотите, но не при каждом нажатии клавиши.

Я написал небольшой плагин событий для jQuery, который делает это. Это всего лишь 20 строк полностью отформатированного кода. Скопируйте его и измените по своему вкусу или используйте как есть.. Вот пример:

     <script src='//raw.githubusercontent.com/Pamblam/textChange/master/textChange.js'>
    <script>
        jQuery(document).ready(function($) {
            $('input#name').textChange(makeAjaxRequest);
            function makeAjaxRequest() {
                $.ajax({
                    url: 'searchAction.php',
                    data: {name: $('input#name').val()},
                    type: 'get',
                    success: function(response) {
                        $('table#resultTable tbody').html(response);
                    }
                });
            }
        });
    </script>
  

 $("input").keyup(function(){
  $("#keyup").text("keyup: " $(this).val());
});
$("input").textChange(function(){
  $("#textchange").text("textchange: " $(this).val());
});  
 b{display:block;}  
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src='//raw.githubusercontent.com/Pamblam/textChange/master/textChange.js'></script>

<b>Type a few words:</b>
<input autofocus />
<div id='keyup'>keyup: </div>
<div id='textchange'>textchange: </div>  

Ответ №3:

Это может быть возможно с помощью автозаполнения пользовательского интерфейса Jquery.

https://jqueryui.com/autocomplete/