You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Razor Pages项目下拉框按端口过滤tr功能失效如何解决?

问题排查

你的端口过滤逻辑存在以下几处核心错误:

  • jQuery选择器语法不符合规范,:not()伪类内的写法完全错误,无法正确筛选出id等于选中值的tr元素
  • 只有隐藏逻辑没有重置显示的逻辑,每次切换下拉选项时,之前被隐藏的行不会重新显示,后续过滤会直接失效
  • 两个过滤逻辑互相独立没有关联,修改其中一个条件会直接覆盖另一个的过滤结果
  • 如果端口值为纯数字开头,直接用#id选择器存在兼容性问题,用属性选择器更稳妥

修复方案

建议把两个过滤逻辑合并,统一触发避免冲突,优化后的完整代码如下:

$(document).ready(function () {
    // 统一过滤函数,同时处理两个过滤条件
    function filterTable() {
        const selectedPort = $('#portdd').val();
        const searchStr = $('#searchb').val().trim();
        // 先重置所有数据行的显示状态
        $('tr:gt(0)').show();
        
        // 应用端口过滤
        if (selectedPort) {
            $('tr:gt(0):not([id="' + selectedPort + '"])').hide();
        }
        
        // 在端口过滤结果的基础上应用名称过滤
        if (searchStr) {
            $('tr:gt(0):visible:not(:contains("' + searchStr + '"))').hide();
        }
    }

    // 绑定事件,搜索框支持实时输入响应,不用等待失焦
    $('#portdd').change(filterTable);
    $('#searchb').on('input change', filterTable);
});

额外注意事项

  • 如果你的tr元素id带有前缀(比如port_8080),需要把选择器对应改成[id="port_' + selectedPort + '"]
  • jQuery自带的:contains是大小写敏感的,如需大小写不敏感的搜索,可以自定义filter方法实现
  • 建议给目标表格加上单独的id(比如id="dataTable"),把选择器改成#dataTable tr:gt(0),避免页面存在其他表格时出现误操作

内容的提问来源于stack exchange,提问作者Aaron Parrilla

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 17:24:03