【问题标题】:How to make a custom select box with filter using jQuery Mobile?如何使用 jQuery Mobile 制作带有过滤器的自定义选择框?
【发布时间】:2018-01-10 07:29:54
【问题描述】:

我在使用 jQuery Mobile 时遇到问题。我想在顶部制作一个带有搜索选项的自定义选择框,就像在 jQuery mobile 的 ul 中一样。我使用 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 定制的,而我使用的是最新版本。

【问题讨论】:

  • 你可以创造一些新的东西。在选择元素上绑定单击事件,并在单击它时阻止默认行为并打开带有搜索过滤器的列表视图的对话框。单击列表视图的元素时,更改选择元素的值。

标签: jquery-mobile select


【解决方案1】:

您可以按照 JQM 演示页面上的示例进行操作 Filter inside Custom Select

【讨论】:

  • @frequent 你知道这是否可以通过多项选择实现吗?
【解决方案2】:

我希望你可以使用 Select2Chosen

Select2 是一个基于 jQuery 的选择框替代品。它支持搜索、远程​​数据集和无限滚动结果。

更多详情和演示:查看Select2或试试Chosen

它已在我们的一些项目中实现并且运行良好。

【讨论】:

    【解决方案3】:

    在 jquery 移动网站中查看此内容:

    selectmenu-custom-filter

    这是原始的 jquery 移动解决方案

    【讨论】:

      【解决方案4】:

      这个链接是我测试过的最好的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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-08-20
        • 1970-01-01
        • 2011-10-02
        • 2011-02-21
        • 1970-01-01
        • 1970-01-01
        • 2015-02-21
        相关资源
        最近更新 更多