Мобильный поиск jquery без автоматического фильтра

У меня есть фильтр поиска на моем мобильном сайте jquery. По умолчанию фильтр поиска автоматически фильтрует список, когда я ввожу ключевое слово поиска. Но мне нужно, чтобы он отфильтровал список после нажатия клавиши ввода.`

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css">
<script src="http://code.jquery.com/jquery-1.11.2.min.js"></script>
<script src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
</head>
<body>

<div data-role="page" id="pageone">
  <div data-role="main" class="ui-content">
    <h2>My Phonebook</h2>
    <form class="ui-filterable">
      <input id="myFilter" data-type="search">
    </form>
    <ul data-role="listview" data-filter="true" data-input="#myFilter" data-autodividers="true" data-inset="true">
      <li><a href="#">Adele</a></li>
      <li><a href="#">Agnes</a></li>
      <li><a href="#">Albert</a></li>
      <li><a href="#">Billy</a></li>
      <li><a href="#">Bob</a></li>
      <li><a href="#">Calvin</a></li>
      <li><a href="#">Cameron</a></li>
      <li><a href="#">Chloe</a></li>
      <li><a href="#">Christina</a></li>
      <li><a href="#">Diana</a></li>
      <li><a href="#">Gabriel</a></li>
      <li><a href="#">Glen</a></li>
      <li><a href="#">Ralph</a></li>
      <li><a href="#">Valarie</a></li>
    </ul>
  </div>
</div> 

</body>
</html>

`


person karthick raja    schedule 09.05.2015    source источник


Ответы (1)


Вы можете отключить фильтрацию, настроив собственный код, отвечающий на событие filterablebeforefilter, и используя preventDefault. Способ узнать, следует ли отменить фильтрацию, может заключаться в том, чтобы всегда блокировать, кроме случаев, когда клавиша ввода была только что нажата.

var blockNextFilter = true;

$("#myFilter").keyup(function(e){
  // respond to enter key only
  if (e.keyCode == 13)
  {
    blockNextFilter = false;

    // trigger a change event to force the filter code to trigger
    $("#myFilter").change();
  }
});

$("ul").on("filterablebeforefilter", function( e, data ) {
  // disable auto-filtering
  if (blockNextFilter) {
    e.preventDefault();
  }
  // except when we're told so
  else {
    blockNextFilter = true;
  }
});

JSFiddle здесь

person Ben    schedule 09.05.2015
comment
Чувак... Работает нормально... спасибо..... за быстрый ответ... до этого я много искал... в любом случае спасибо.... - person karthick raja; 09.05.2015