javascript - 如何使用 JQuery UI 自动完成阻止事件在 IE11 中传播?
问题描述
我正在使用 jquery-ui-1.8.21 自动完成库为表单中的字段创建下拉列表。自动完成带有 2 个事件处理程序,“选择”和“更改”。
当用户从下拉列表中选择一个项目时,它会触发“选择”事件、填充字段、向字段添加文本(我们称之为字段 B)以及其他事情。当用户取消关注某个字段时,如果字段中的值发生更改,则会触发“更改”事件,将文本添加到字段 B。
我的问题是,当用户在下拉列表中选择一个项目然后取消焦点时,它会触发“选择”和“更改”事件,将文本添加到字段 B 两次。我只想触发选择事件以便添加一次文本。出于某种原因,这两个事件仅在我单击下拉菜单时触发,当我使用键盘选择时,仅触发“选择”。
select: function (event, ui) {
console.log("select function")
//other stuff
event.preventDefault();
event.returnValue = false;
}
change: function (event, ui) {
console.log("change function")
//other stuff
}
我已经尝试过event.preventDefault
, event.returnValue
,在每个组合中都使用window.event
and event.originalEvent
(因为 JQuery 创建了自己的事件),并且return false
它们都没有阻止“更改”事件的触发。
有趣的是,所有这些事件都被event.cancelable
认为event.isDefaultPrevented
是真实的,所以它应该被取消,但事实并非如此。
我怎样才能让它工作?
这只是 IE11 中的一个问题,在 Chrome 中event.preventDefault
可以正常工作。
解决方案
推荐阅读
- ruby-on-rails - ActionView::Template::Error(没有路由匹配 {:action=>"destroy", :id=>nil},不匹配的约束:[:id]):
- python - 带有 JSONRPC 的烧瓶和带有不可验证证书的 HTTPS 服务器
- asp.net-core - JSON 构建实体模型时输入意外结束
- apache-spark - 打印语句在 3 个节点的 Spark 独立集群中不起作用
- rstudio - reticulate R 包没有找到 python 安装(Sys.which("python") 返回空 str)
- drupal-8 - Drupal 用户权限
- rust - 如何将 SmallVec 与 Cow 一起使用
- r - 将行中的所有数据移到一列
- angular - 可观察的 fromEvent 不会在角度上激活 detectionChange
- python - 在 Celery 任务中所做的数据库更改在主线程中不可见