Запуск функции при изменении значения текстового поля вместо события keyup - PullRequest
2 голосов
/ 06 июля 2011

Следующий код в настоящее время генерирует поисковый запрос только тогда, когда происходит событие keyup. Это не было проблемой до тех пор, пока я не начал использовать webkit, и теперь можно очистить поле поиска, не нажимая никаких клавиш (нажав «x» в поле поиска).

Можно ли запускать ту же функцию при изменении поля поиска?

Я пытался заменить .keyup на .change, но это не дает никакого ответа, когда происходят изменения в окне поиска.

$('#search').keyup(function(e){
  e.preventDefault();
  search = $(this).val();
  $.ajax({
    url: '/lists.xml?search='+search,
    dataType: "xml",
    success: parseXML
  });
}); 

Любая помощь будет принята с благодарностью!

РЕДАКТИРОВАТЬ: После некоторых дальнейших исследований я нашел этот пример .

Следующий код работает в сочетании с кодом выше:

$('#search').click(function(e){
  if($(this).val()==""){
  e.preventDefault();
  search = $(this).val();

  $.ajax({
    url: '/lists.xml?search='+search,
    dataType: "xml",
    success: parseXML
  });
  }
});  

Ответы [ 3 ]

1 голос
/ 06 июля 2011

Насколько я знаю, изменения, размытие и фокусировка происходят только тогда, когда вы убираете фокус с текстового поля.Затем они только проверяют, было ли предыдущее значение таким же, как оригинал.

Таким образом, если предыдущее значение было "", и вы вводите "asdf", и щелкните вдали от текстового поля, чтобы потерять фокус, ваша функция сработает.Так что теперь значение «asdf».Если вы наберете «asdfeee», то сотрите «eee» и уберите фокус, событие не сработает, потому что значение все равно будет равно «asdf».обработчик события keyup и просто добавьте обработчик события щелчка, который делает то же самое для учета поведения WebKit.

0 голосов
/ 07 июля 2011

После некоторых дальнейших исследований я нашел решение своей проблемы. Чтобы учесть функциональность webkit, я добавил 2 обработчика событий, как показано ниже. Это не идеальное решение, но пока подойдет ...

$('#search').keyup(function(e){
  e.preventDefault();
  search = $(this).val();
  $.ajax({
    url: '/lists.xml?search='+search,
    dataType: "xml",
    success: parseXML
  });
}); 

$('#search').click(function(e){
  if($(this).val()==""){
  e.preventDefault();
  search = $(this).val();

  $.ajax({
    url: '/lists.xml?search='+search,
    dataType: "xml",
    success: parseXML
  });
  }
});  

Этот пример помог в выводе решения.

0 голосов
/ 06 июля 2011
$('#search').blur(function(e) {  // you may use `focus`
    search = $(this).val();
    if (search != null || search != '') {
        $.ajax({
            url: '/lists.xml?search=' + search,
            dataType: "xml",
            success: parseXML
        });
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...