javascript - jQuery 自动完成过滤表的输入字段

标签 javascript jquery html

在我的程序中,我有一个用输入字段过滤的表。您在搜索/输入字段中键入内容,表格会立即得到过滤,而无需按回车键。

现在我想为这个输入字段添加自动完成功能,它起作用了,但有一个问题。当我开始在输入字段中输入内容时,我会得到建议。现在我可以点击一个建议,它会被写在输入字段中。那很好用。但是在我按下回车键之前,我的表格不会被过滤,这就是我的问题。如何使其在选择建议后无需按回车键自动提交/过滤表格?

这是我的两个过滤和自动完成功能。

$("#searchInput").autocomplete({
    source: availableTags, //array with all possible search results of the table
});

$(document).ready(function(){
    $("#searchInput").on("keyup", function () {
        var value = $(this).val().toLowerCase();
        $("#contractTable tr").filter(function(){
             $(this).toggle($(this).find(".target").text().toLowerCase().indexOf(value) > -1) // I only want to search for two specific  cells of every row thats why I use find(".target")
        });
    });
});

我希望你明白我正在努力实现的目标,顺便说一句,我对 JavaScript 和 jQuery 还很陌生,所以请对我手下留情:)

最佳答案

我在这里为您解决了这个问题: https://jsfiddle.net/eakumopw/1/

您的问题是您只将过滤事件 Hook 到 "keyup"。但是选择自动完成建议并不是关键事件。添加另一个事件也不会解决问题,因为建议框是不同的元素。

我检查了 jquery-autocomplete 支持哪些事件(http://tutorialspark.com/jqueryUI/jQuery_UI_AutoComplete_Events.php)并发现 close() 事件是我的解决方案。

我将过滤过程外包给一个新函数 doFilter( value ) 并在 jquery-autcomplete 的 close 事件上调用该函数。

$("#myInput").autocomplete({
  source: availableTags,
  close: function(event, ui) {
    console.log("close");
    doFilter($("#myInput").val().toLowerCase());
  }
});

关于javascript - jQuery 自动完成过滤表的输入字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55139281/

相关文章:

html - 固定 <div> 元素中的左浮动和右浮动

javascript - 使用 jquery(简单的文本编辑器)向 textarea 添加值

javascript - 在 JavaScript 中调用嵌套函数

javascript - 在 .js 文件中嵌入 PHP 变量 java 的最佳方式

javascript - 设置选定的选项 JQuery

javascript - 使用 jQuery 预加载图像

php - UTC 时钟基于服务器时间吗?

javascript - 在 JS 中继续 ALLWAYS Illegal in switch 但 break 工作正常

html - 如何消除这两个 div 部分之间的间隙?

javascript - React 应用程序中的失败测试