Как реализовать события click и keypress для окна быстрого поиска по сайту?

Всем доброй ночи.
Подскажите, как правильно связать следующие события:
есть input - поиск по сайту. При вводе букв в input подгружается через ajax результаты поиска..
var sV = $("#story").val();
$.ajax({type: "POST",url: "/ajax/mod.php",data: "a="+sV,success: function(html){ 
$("body").on('keypress click', function(e){ 
if (sV.length > 2) {  var keycode = (e.keyCode ? e.keyCode : e.which); 
if (keycode === 13) { alert(777); e.stopPropagation(); 
} else { 
alert(333);  if( $(e.target).closest("#fastsearchblock").length ) return;$("#fastsearchblock").fadeOut("slow").remove(); $("#story").val(""); sV = "";  e.stopPropagation();  } } });
}});

Если нажать на кнопку мыши вне всплывающего окошка с результатами поиска, то это окно удаляется и в input стираются буквы.. Проблема в том, что есть в input ввести буквы и нажать enter, то через post-метод передается пустота, так как почему-то срабатывает $("#story").val(""); . Пробую отгородить два события (нажатие на enter и клик, но ничего не получается). Люди добрые, что я неправильно делаю? Заранее спасибо.
  • Вопрос задан
  • 211 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Nokia7650
web developer
Не совсем понятно, где сам вызов ajax'а.

Вам нужно сделать 1 функцию для ловли нажатий на инпуте и 2 для запуска ajax поиска. И из 1 функции вызывать 2.
Давно не занимался js, примерно как-то так:

$(document).ready(function(){
   var ajaxPost = null;
   //ловим нажатия
   $("#story").keydown(function(e){ //лучше keydown, keypress, насколько помню, не все клавиши ловит
      if (e.keycode === 13) {
         StartSearch($("#story").val());
      }
   })
});
//делаем поиск
function StartSearch(query){
   if (query == "" || ajaxPost != null) return; //в инпуте пусто или пред запрос еще не выполнен - выход
   ajaxPost = $.post("/ajax/mod.php", { "query": query}, function (text) {
      //получаем ответ от сервера (text)
      //и делаем с ним что хотим.
     ajaxPost = null;
   }
}


На сервере получаем переменную query, делаем поиск, возвращаем ответ-результат.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 нояб. 2024, в 06:06
1500 руб./в час
22 нояб. 2024, в 06:04
1 руб./за проект
22 нояб. 2024, в 03:54
1500 руб./за проект