Javascript e匹配任何返回值:id.some(val=>val.indexOf(choice)==-1) 当然,还有很大的改进空间

Javascript e匹配任何返回值:id.some(val=>val.indexOf(choice)==-1) 当然,还有很大的改进空间,javascript,html,jquery,datatable,Javascript,Html,Jquery,Datatable,演示 $(“#选择”).change(函数(){ var choice=$(this.val().trim().toUpperCase(); $(“表tr”)。每个(函数(索引){ 如果(索引!==0){ $row=$(此项); var id=$row.find(“td:contains(val)”).map((i,td)=>td.textContent.trim().toUpperCase()).get(); if(id.some(val=>val.indexOf(choice)=-1)){

演示

$(“#选择”).change(函数(){
var choice=$(this.val().trim().toUpperCase();
$(“表tr”)。每个(函数(索引){
如果(索引!==0){
$row=$(此项);
var id=$row.find(“td:contains(val)”).map((i,td)=>td.textContent.trim().toUpperCase()).get();
if(id.some(val=>val.indexOf(choice)=-1)){
$row.hide();
}否则{
$row.show();
}
}
});
})
.change()

瓦尔1
瓦尔2
val3
瓦尔4
瓦尔5
瓦尔6
瓦尔7
瓦尔8
val9
瓦尔10
身份证件
va1
测试1
测试1
测试1
测试1
创建数据
身份证件
val3
测试1
测试1
测试1
测试1
2020-20-10
身份证件
瓦尔4
测试1
测试1
测试1
测试1
2020-20-08
身份证件
瓦尔4
测试1
测试1
测试1
测试1
2020-20-10
身份证件
瓦尔4
测试1
测试1
测试1
测试1
2020-20-10
身份证件
瓦尔6
测试1
测试1
测试1
测试1
2020-20-09

由于可能返回多个单元格,因此将值作为数组获取:
$row.find(“td:contains(val)”).map((i,td)=>td.textContent.trim().toUpperCase()).get()
然后使用
Array#some(function)
测试您的选择是否匹配任何返回值:
id.some(val=>val.indexOf(choice)=-1)

  • 当然,还有很大的改进空间
演示

$(“#选择”).change(函数(){
var choice=$(this.val().trim().toUpperCase();
$(“表tr”)。每个(函数(索引){
如果(索引!==0){
$row=$(此项);
var id=$row.find(“td:contains(val)”).map((i,td)=>td.textContent.trim().toUpperCase()).get();
if(id.some(val=>val.indexOf(choice)=-1)){
$row.hide();
}否则{
$row.show();
}
}
});
})
.change()

瓦尔1
瓦尔2
val3
瓦尔4
瓦尔5
瓦尔6
瓦尔7
瓦尔8
val9
瓦尔10
身份证件
va1
测试1
测试1
测试1
测试1
创建数据
身份证件
val3
测试1
测试1
测试1
测试1
2020-20-10
身份证件
瓦尔4
测试1
测试1
测试1
测试1
2020-20-08
身份证件
瓦尔4
测试1
测试1
测试1
测试1
2020-20-10
身份证件
瓦尔4
测试1
测试1
测试1
测试1
2020-20-10
身份证件
瓦尔6
测试1
测试1
测试1
测试1
2020-20-09

如果不需要忽略大小写,只需显示包含所需文本的所有元素并隐藏其他元素即可:

$("#select").change(function() {
    var choice = $(this).val();
    $("table td:contains("+choice+")").show();
    $("table td:not(:contains("+choice+"))").hide();
});
如果要忽略大小写,则在尝试查找
td
元素时只需删除
.val
td.val
意味着用class
val
搜索元素
标记,比如


如果不需要忽略大小写,只需显示包含所需文本的所有元素并隐藏其他元素即可:

$("#select").change(function() {
    var choice = $(this).val();
    $("table td:contains("+choice+")").show();
    $("table td:not(:contains("+choice+"))").hide();
});
如果要忽略大小写,则在尝试查找
td
元素时只需删除
.val
td.val
意味着用class
val
搜索元素
标记,比如


多亏了你的回答,我终于找到了一个简单而有用的解决办法。此代码适用于整个表,即使其中有多个页面,并检查是否出现在单个列上:

$('#select').on('change', function () {
                    table.columns(1).search( this.value ).draw();
                } );

});

请记住,列从0开始,因此在本例中,它在第2列上搜索时,只会在名为“select”的下拉列表中获得所选元素的每一次出现,而不考虑区分大小写选项。

感谢您的回答,我找到了一个简单而有用的解决方案。此代码适用于整个表,即使其中有多个页面,并检查是否出现在单个列上:

$('#select').on('change', function () {
                    table.columns(1).search( this.value ).draw();
                } );

});


请记住,列从0开始,因此在本例中,它在第2列上搜索时,只会在名为“select”的下拉列表中获得所选元素的每次出现,这与区分大小写选项有关。

如果可以,请在此处显示表的示例行。我已在此处添加了行和列代码。Fiddle更为完整。您正在尝试
。查找('td.val')
,但没有
td
元素具有类
val
。那么,您针对的是哪个特定单元格
td
/列?我需要在名为val的列中搜索。如何在其中搜索?该语法用于类选择器。您想使用
:contains(“val”)
进行此操作。如果可以,请在此处显示表格的示例行。我已在此处添加了行和列代码。Fiddle更为完整。您正在尝试
。查找('td.val')
,但没有
td
元素具有类
val
。那么,您针对的是哪个特定单元格
td
/列?我需要在名为val的列中搜索。如何在其中搜索?该语法用于类选择器。您想使用
:contains(“val”)
。@gaetanoM为什么更改此用户的代码并将
tbody
添加到选择器中?您应该添加一条评论,让他们知道这个潜在的“修复”…@polywhill先生,因为他几乎就在解决方案中了…@gaetanoM是的,但您应该提供您的“更好”解决方案作为单独的答案。如果您的编辑进入了编辑队列(特别是对于新用户的响应),它将被拒绝。只是让你知道,修改别人的解决方案背后的含义,可能会在将来伤害你。请看:@polywhill先生,我已经投票给你了。。。。。。抱歉,我删除了有人添加到答案中的片段,因为它不起作用properly@gaetanoM为什么要更改此用户的代码并将
t正文
添加到选择器中?您应该添加一条评论,让他们知道这个潜在的“修复”…@polywhill先生,因为他几乎就在解决方案中了…@gaetanoM是的,但您应该提供您的“更好”解决方案作为单独的答案。如果你的编辑