微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jquery 过滤器的通配符

如何解决jquery 过滤器的通配符

我正在使用下面的脚本来过滤我的表格

<script>
        $(document).ready(function() {
            $('#citylist').change(function() {
                var value = $('#citylist').val();
                $("#myTable tr").filter(function() {
                    $(this).toggle($(this).text().indexOf(value) > -1)
                });
            });
        });
    </script>

这是我将要使用的示例设计

<select class="form-control" id="citylist">
       <option value="val1">val1</option>
       <option value="val2">val2</option>
       <option value="val3">val3</option>
       <option value="val4">val4</option>
</select>

功能正常,没有任何冲突。

我想在一个选项中清除过滤器。所以,我想知道 sql 中是否有任何像 % 这样的通配符可以用作执行此任务的选项的值?

我已经尝试使用 *% 作为选项的值。

任何帮助将不胜感激

解决方法

如果您想重置过滤器(这就是我认为“在一个选择选项中清除过滤器”的意思),您可以在下拉列表中添加一个选项,其中值是一个空字符串。

例如:

<select class="form-control" id="citylist">
   <option value="">-- please select --</option>
   <option value="Edinburgh">Edinburgh</option>
   <option value="Tokyo">Tokyo</option>
   <option value="San Francisco">San Francisco</option>
   <option value="London">London</option>
</select>

然而,$('#citylist').change(...) 函数中的逻辑有点奇怪——它只会找到显示页面中的记录(所以如果你使用分页,它不会在其他页面中找到匹配的记录)和它将隐藏表格的标题行。这是因为您是在 DOM 中而不是在 DataTables 数据中进行搜索。

也许这就是您真正想要的,但这不是您通常在 DataTables 中执行过滤的方式。

如果您想以更常用的方式进行搜索,这里有一个示例:

$(document).ready(function() {

  var table = $('#myTable').DataTable( {
    -- your usual table initialization goes here --
  } );

  $('#citylist').change(function() {
    var value = $('#citylist').val();
    table.columns(2).search( value,false,false ).draw();
  } );

} );

这假设您有一个表,其中 City 列是表中的第三列(table.columns(2) - 第一列的索引为零)。

search( value,false ) 中的布尔值表示您是否要使用正则表达式 (false) 以及是否要使用智能搜索(还有 false)。

您可以阅读 search()documentation 以获得完整的解释。

您还可以看到一个示例 here,其中下拉搜索基于使用正则表达式。这在您的具体示例中不需要(因为您正在匹配整个城市名称)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。