2013-08-07 28 views
1

我遇到了jQuery Mobile的问题。我想要在顶部使用搜索选项来制作一个自定义选择框,就像jQuery手机中的ul一样。我已经使用jQuery mobile创建了自定义选择框,但无法在其上添加搜索栏。正是我想要的东西是这样的:如何使用jQuery Mobile制作带过滤器的自定义选择框?

http://jsfiddle.net/sEMyT/2/

<!DOCTYPE html> 
<html> 
<head> 
<link class="jsbin" href="http://code.jquery.com/mobile/1.0b2/jquery.mobile-1.0b2.min.css" rel="stylesheet" type="text/css" /> 
<script class="jsbin" src="http://code.jquery.com/jquery-1.6.2.min.js"></script> 
<script class="jsbin" src="https://github.com/downloads/aliok/jquery-mobile/jquery.mobile_selectmenu_filter_01.js"></script> 
<title>JS Bin</title> 
</head> 
<body> 

    <div data-role="page"> 
    <div data-role="content"> 

    <h2>Select menu options filtering</h2> 

      <p>The mobile browsers are limited and sometimes it is annoying to scroll a long list. For this kind of selects, you can use <code>data-filter</code> attribute alongside with <code>data-force-dialog</code> and <code>data-native</code> attributes to have a select menu with search bar filtering its options.</p> 


      <a href="#" onclick="$('#select-choice-12').selectmenu('refresh', true); return false;">Refresh the selectmenu (forcerebuild) with clearing the filter value</a> 

        <div data-role="fieldcontain"> 
         <label for="select-choice-12" class="select">Your state:</label> 
         <select name="select-choice-12" id="select-choice-12" data-native-menu="false" data-force-dialog="true" data-native-menu="false" data-filter="true"> 
          <option value="AL">Alabama</option> 
          <option value="AK">Alaska</option> 
          <option value="AZ">Arizona</option> 
          <option value="AR">Arkansas</option> 
          <option value="CA">California</option> 
          <option value="CO">Colorado</option> 
          <option value="CT">Connecticut</option> 
          <option value="DE">Delaware</option> 
          <option value="FL">Florida</option> 
          <option value="GA">Georgia</option> 
          <option value="HI">Hawaii</option> 
          <option value="ID">Idaho</option> 
          <option value="IL">Illinois</option> 
          <option value="IN">Indiana</option> 
          <option value="IA">Iowa</option> 
          <option value="KS">Kansas</option> 
          <option value="KY">Kentucky</option> 
          <option value="LA">Louisiana</option> 
          <option value="ME">Maine</option> 
          <option value="MD">Maryland</option> 
          <option value="MA">Massachusetts</option> 
          <option value="MI">Michigan</option> 
          <option value="MN">Minnesota</option> 
          <option value="MS">Mississippi</option> 
          <option value="MO">Missouri</option> 
          <option value="MT">Montana</option> 
          <option value="NE">Nebraska</option> 
          <option value="NV">Nevada</option> 
          <option value="NH">New Hampshire</option> 
          <option value="NJ">New Jersey</option> 
          <option value="NM">New Mexico</option> 
          <option value="NY">New York</option> 
          <option value="NC">North Carolina</option> 
          <option value="ND">North Dakota</option> 
          <option value="OH">Ohio</option> 
          <option value="OK">Oklahoma</option> 
          <option value="OR">Oregon</option> 
          <option value="PA">Pennsylvania</option> 
          <option value="RI">Rhode Island</option> 
          <option value="SC">South Carolina</option> 
          <option value="SD">South Dakota</option> 
          <option value="TN">Tennessee</option> 
          <option value="TX">Texas</option> 
          <option value="UT">Utah</option> 
          <option value="VT">Vermont</option> 
          <option value="VA">Virginia</option> 
          <option value="WA">Washington</option> 
          <option value="WV">West Virginia</option> 
          <option value="WI">Wisconsin</option> 
          <option value="WY">Wyoming</option> 
         </select> 
        </div> 
     You can see the source code at <a href="https://github.com/aliok/jquery-mobile/commits/selectmenu-forceDialog/">https://github.com/aliok/jquery-mobile/commits/selectmenu-forceDialog/</a> 
     <br/> 
     <br/> 
     Developed by <a href="http://twitter.com/aliok_tr">Ali Ok - @aliok_tr</a> 

    </div> 
</div> 

</body> 
</html> 

但随着它与一个很老的版本jQuery Mobile的定制和我使用的是最新版本的问题。

+0

你可以创造新的东西。在select元素上绑定一个click事件,当它被点击时阻止默认行为并使用带搜索过滤器的listview打开一个对话框。当单击列表视图的元素时,更改select元素的值。 – alkis

回答

2

我希望你能使用选择二获选

选择二是选择框一个基于jQuery更换。它支持搜索,远程数据集和结果的无限滚动。

有关详细信息和演示:检查Select2或尝试Chosen

它在我们的一些项目和它工作正常实施。

2

这链接其最佳https://github.com/studiosedition/JQM-Custom-Search-Filtering-Example我测试

推荐人http://www.peachpit.com/articles/article.aspx?p=1929169

其他例如自定义过滤器

http://jsfiddle.net/dondavidml/ekbo4uy5/

$("ul").listview('option', 'filterCallback', function (text, searchValue) { 
console.log(" searchValue " + searchValue.toUpperCase() + " text " + text.substring(0, searchValue.length).toUpperCase()); 
if (searchValue.toUpperCase() == (text.substring(0, searchValue.length).toUpperCase())) { 
    return false; 
} 
return true; }); 

要小心,订单事项在进口这样

<link rel="stylesheet" href="http://code.jquery.com/mobile/1.1.1/jquery.mobile-1.1.1.min.css" /> 
    <script src="http://code.jquery.com/jquery-1.7.1.min.js"></script> 
    <script src="js/search-filter.js"></script> 
    <script type="text/javascript" src="http://code.jquery.com/mobile/1.3.0/jquery.mobile-1.3.0.min.js"></script> 

:d

相关问题