javascript - .stopPropagation() 放置在输入上,不允许输入输入文本
问题描述
我正在尝试将列搜索添加到表中的某些列(使用数据表)。我将用于搜索的输入字段添加到表格的每个标题单元格中。Datatables 使您在任何时候单击标题时都会更改排序方法,因此我插入.stopPropagation
了附加到输入字段的单击事件,以便在单击标题单元格的输入部分时不会更改列上的排序。唯一的问题是它.stopPropagation
正在工作并且不影响排序,但是当单击输入字段时,它不允许我向该字段添加文本。我不确定我做错了什么。这是代码片段(这被放入用于在我们网站上创建每个表的代码中):
var columnsearch = $(this).find('th');
columnsearch.each(function () {
var title = $(this).text();
$(this).append( '<input type="search" placeholder="Search '+title+'" />' );
})
var textbox = $(this).find('input')
textbox.click(function (event) {
event.stopPropagation();
})
解决方案
在进行了一些挖掘之后,我通过使用 Chrome 检查器的事件侦听器部分发现了我们在 Datatables 上启用的一项功能 colReorder,用于重新排列列,它通过冲突mousedown
事件干扰了输入字段的功能。我补充说:
textbox.mousedown(function(event){
event.stopPropagation();
})
到列搜索 JS 部分,这解决了问题。
推荐阅读
- javascript - 重新定义的 toString 的 getOwnPropertyDescriptor 应该是未定义的
- c++ - 使用 c++ 和 OpenCV 2.4.x 对两幅图像进行直方图匹配
- html - 转换翻译在 Chrome 中的键盘焦点上有奇怪的行为
- api-platform.com - 如何在没有登录 ApiPlatform 的情况下允许路径?
- javascript - 如何在 x 轴上有月份和年份,在 Highcharts 中显示为数字?
- javascript - 借助纯 JavaScript 获取 DOM
- angular - 如何将全高设置为垫子步骤内容
- python - 如何使用 SQL 或 Python 从亚马逊红移中的亚马逊雪花重新创建数据库表?(重新创建一次,而不是一个一个)
- linux - 用于在 bash 中为每个星期三在系统中查找第一个和最后一个登录详细信息的命令?
- macos - VSCode调试C++启动外部终端,但不运行程序