2012-01-23 7 views
5

jQuery Mobileのリストビューと検索フィルタはうまく動作します。ただし、オートコンプリートコントロールのように振る舞いを変更したい、つまり検索フィルタが入力されるまでリストアイテムが表示されないようにしたいと考えています。jQueryモバイルリストフィルタはオートコンプリートのように動作します

私はjQuery UIを使って他の人が自動完成したのを見ましたが、結果をスタイルするためにこのライブラリと余分な作業を含めなければならないのは残念です。

jQuery Mobile 1.0でこれを行うことはできますか?

答えて

9

あなたはこの

JS

$("input[data-type='search']").keyup(function() { 
    if($(this).val() == '') { 
     $("ul:jqmData(role='listview')").children().addClass('ui-screen-hidden'); 
    } 
}); 

$('a.ui-input-clear').click(function() { 
    $("input[data-type='search']").val(''); 
    $("input[data-type='search']").trigger('keyup'); 
}); 

HTML(各<li>にクラス属性を追加する必要があります要素class="ui-screen-hidden"

<div data-role="page" id="filterMe"> 
    <div data-role="content"> 
     <ul data-role="listview" data-filter="true"> 
      <li class="ui-screen-hidden"><a href="#">Acura</a></li> 
      <li class="ui-screen-hidden"><a href="#">Audi</a></li> 
      <li class="ui-screen-hidden"><a href="#">BMW</a></li> 
      <li class="ui-screen-hidden"><a href="#">Cadillac</a></li> 
      <li class="ui-screen-hidden"><a href="#">Chrysler</a></li> 
      <li class="ui-screen-hidden"><a href="#">Dodge</a></li> 
      <li class="ui-screen-hidden"><a href="#">Ferrari</a></li> 
      <li class="ui-screen-hidden"><a href="#">Ford</a></li> 
      <li class="ui-screen-hidden"><a href="#">GMC</a></li> 
      <li class="ui-screen-hidden"><a href="#">Honda</a></li> 
      <li class="ui-screen-hidden"><a href="#">Hyundai</a></li> 
      <li class="ui-screen-hidden"><a href="#">Infiniti</a></li> 
      <li class="ui-screen-hidden"><a href="#">Jeep</a></li> 
      <li class="ui-screen-hidden"><a href="#">Kia</a></li> 
      <li class="ui-screen-hidden"><a href="#">Lexus</a></li> 
      <li class="ui-screen-hidden"><a href="#">Mini</a></li> 
      <li class="ui-screen-hidden"><a href="#">Nissan</a></li> 
      <li class="ui-screen-hidden"><a href="#">Porsche</a></li> 
      <li class="ui-screen-hidden"><a href="#">Subaru</a></li> 
      <li class="ui-screen-hidden"><a href="#">Toyota</a></li> 
      <li class="ui-screen-hidden"><a href="#">Volkswagon</a></li> 
      <li class="ui-screen-hidden"><a href="#">Volvo</a></li> 
     </ul> 
    </div> 
</div> 
+0

ありがとうございます。素晴らしいですが、クリアテキストボタンを押しても処理する必要があります。私はそうするコードで私の質問を更新しました。おそらく、編集権限を持つ人が2人をマージする可能性があります。 – row1

+0

ボタンのクリック機能を追加しました –

+0

これはJQM 1.1.0では動作しません。私は問題を報告して、彼らは今それを探しているhttps://github.com/jquery/jquery-mobile/issues/4539 – row1

4

http://jsfiddle.net/ULXbb/48/

私は、その選択機能を有効にしています。これで、リストからアイテムを選択できます。それは入力フィールドに上書きされ、リストは非表示にされます。

1

JQuerymobile 1.1.0およびJquery 1.7.2では、このソリューションはもう機能しないようです。

あなたはフィルタボックスをクリアしている場合、彼らは消えないんどちらも、キーボードのDeleteキーを押していない限り、リストからエントリが表示されません...

編集:私はこのサイト上のオートコンプリート機能させるために最適なソリューションを見つけました:http://www.andymatthews.net/read/2012/03/27/jQuery-Mobile-Autocomplete-now-available

+2

これをjQuery Mobile 1.0.0で動作させるには、jQuery.mobile-1.1を変更しなければならなかった.0.js。 5818行で 'if'文を削除し、' listItems = list.children(); 'に置き換えました。 – row1

関連する問題