繁体   English   中英

jquery 过滤器的通配符

[英]Wildcard character for jquery filter

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

<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>

这些功能工作正常,没有任何冲突。

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

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

任何帮助,将不胜感激

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

例如:

<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(...) function 中的逻辑有点奇怪 - 它只会查找显示页面中的记录(因此,如果您使用分页,它将找不到匹配项其他页面中的记录),它将隐藏表格的标题行。 这是因为您是在 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 ) 以及是否要使用智能搜索(也是false )。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM