使用输入元素上的修饰键触发单击事件

2023-12-23

我正在为某些功能编写测试,其中涉及用户按住 Shift 键并单击复选框。我在用着$('input').trigger($.Event('click', { shiftKey: true }));来模拟那个。

但是当事件监听器被调用时,event.shiftKey财产总是被报告为false当源自我的合成事件时,而真实的点击会产生所需的效果。更令人困惑的是,在非input元素似乎工作得很好。看http://jsfiddle.net/hus​​kssk1/ http://jsfiddle.net/huskssk1/例如。

我在浏览器(Chrome 39、OS X)和测试堆栈(Poltergeist 1.5.1 + PhantomJS 1.9.8)中观察到这种行为。

这是什么原因造成的?有什么办法解决吗?

PS我的完整测试堆栈是Ruby on Rails + RSpec + Capybara + Poltergeist + PhantomJS,如果您知道触发shift-click的更好方法,请告诉我!


@Vijay 是正确的,这是 jQuery 问题。问题出在这一行:https://github.com/jquery/jquery/blob/master/src/event.js#L577 https://github.com/jquery/jquery/blob/master/src/event.js#L577。 它是在 jquery 1.9.0 中添加的

因此,您可以通过向 javascript 添加以下代码来对 jQuery 进行猴子修补:

delete jQuery.event.special.click.trigger

单击复选框将按预期工作:http://jsfiddle.net/ofbazqvo/ http://jsfiddle.net/ofbazqvo/(注意,我评论了e.stopPropogation()身体上也有),但有一个例外:input.checkedvalue 在你的“onclick”回调中将是无效的,但稍后会更新为正确的值(令人惊讶的是,这就是为什么这个特殊的复选框处理被添加到 jquery 中的原因)。

或者,您可以通过纯 JavaScript 手动调度事件:http://jsfiddle.net/6dutftkt/1/ http://jsfiddle.net/6dutftkt/1/。这在 Chrome 中没有任何怪癖。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用输入元素上的修饰键触发单击事件 的相关文章

随机推荐

  • C 中整数表达式的大小

    令我惊讶的是 Xcode 编译 C gnu11 include
  • Magento EAV:如何硬删除属性值?

    在进入细节之前 让我们先问清楚这个问题 有没有办法hard删除属性value来自产品 By hard我的意思是 从数据库中删除该行 而不仅仅是将值设置为 null 或空 现在 详细信息 我目前在 Magento 上遇到一个问题 我商店中的许
  • 有没有一种方法可以在没有 xml 或属性文件的情况下在应用程序上下文中存储 java 变量/对象

    我想在 Spring Boot 应用程序的应用程序上下文中存储特定变量 字符串或对象 但我不想使用 xml 或属性文件来存储它 将有一个函数将数据存储在应用程序上下文中 我应该能够检索它 修改它 删除它或添加更多数据 基本上我想在初始化完成
  • 耦合常微分方程的龙格库塔

    我正在 Octave 中构建一个函数来解决N耦合常微分方程类型 dx dt F x y z t dy dt G x y z t dz dt H x y z t 使用这三种方法中的任何一种 Euler Heun 和 Runge Kutta 4
  • 如何在电子表格的 Google Apps 脚本中使用数组作为自定义函数的参数

    我正在尝试使用脚本编辑器在我的谷歌电子表格中创建自定义函数 我似乎无法允许用户为函数提供一个数组作为参数 当我像这样进行硬编码时 我的脚本可以工作 var values SpreadsheetApp getActiveSheet getRa
  • Plotly:如何自定义图例?

    我已经自定义了使用plotly绘制的数据点的颜色 数据点的颜色是根据与其关联的标签指定的 不过设置之后legend True所有三种颜色 在字典中定义 都不会显示在图中 我想 a rgb 147 112 219 the actual col
  • iOS PhoneGap 构建失败

    我是新来的PhoneGap适用于 iOS 和 Xcode 我的应用程序在 Android 手机上运行良好 但遇到了问题 我能够在 iOS 模拟器中构建并运行该应用程序 但是当我将其存档以在设备上进行测试时 出现以下错误 我到处搜索但找不到有
  • JQuery Mobile,整个网站的一个页脚片段

    I m not询问如何获得固定页脚 我有一个多页和单页的结构 我想知道如何在整个网站中仅使用一个 html 片段 我真的在寻找一种解决方案 因为我想仅在一个位置编辑页脚并在所有页面中查看修改 Thanks 编辑 我正在开发一个用 Phone
  • 为什么 VisualVM 探查器中没有显示所有方法?

    我在用VisualVM看看我的应用程序在哪里慢 但它并没有显示所有方法 可能没有显示所有延迟应用程序的方法 我有一个实时应用程序 声音处理 并且有几百微秒的时间不足 有没有可能VisualVM隐藏本身速度很快的方法 UPDATE 1 我通过
  • 使用 PK 反馈循环复制行

    鉴于以下情况 表1 Id Field1 Field2 NULL 1 2 NULL 3 4 我想将 Field1 和 Field2 的值插入到另一个表 Table2 中 Table2 有一个自增整数主键 我想从表 2 中检索新的 PK 并更新
  • 由于访问控制列表,SSRS 401.3 错误访问被拒绝

    卸载 Oracle 10 客户端 安全补丁后 不知道是什么触发了它 我在用户访问我们的 SSRS 测试服务器时遇到了问题 首先发生的事情是 SQL 服务和 SSRS 服务拒绝在 NT AUTHORITY SYSTEM 下启动 当我将其更改为
  • 无法使用 dotnet CLI 和 nuspec 文件打包 NuGet 包

    我有几个项目正在从 NET Framework 4 7 迁移到 NET Standard 2 0 结果 我正在尝试使用dotnet pack命令来创建我的 NuGet 包 同时使用我的nuspec带有令牌的文件 我有几个自定义构建脚本可以为
  • 匹配引用的 csv 中的未转义引号

    我查看了几篇具有类似标题的 Stack Overflow 帖子 但没有一个已接受的答案对我有用 我有一个 CSV 文件 其中数据的每个 单元格 均由逗号分隔并被引用 包括数字 每行以换行符结束 一些文本 单元格 中有引号 我想使用正则表达式
  • ngrx 订阅存储不会在状态更改时更新 Angular 5

    我正在构建一个应用程序 它将城市名称发送到 api 端点并返回该城市的天气 它使用两个操作 一个将更新城市 使用名称作为有效负载 第二个操作加载返回的新数组以更新状态 该效果使用 switchMap 映射 api 调用然后返回结果 用于显示
  • jsf隐式对象cc和组件之间的区别

    也许这是一个愚蠢的问题 但我用 cc 引用复合组件 例如 cc attrs randomAttr 但我也看到了 component 隐式对象 我使用它是因为我被告知要这样做 但我不太明白它的用途 谁能解释一下吗 cc指评估时正在处理的顶级复
  • 在没有内置函数的情况下按降序排列文件中的元素

    我按照冒泡排序重新编写了程序 def main try array file open input Please enter the name of the file you wish to open A file read split f
  • SASS 和 SCSS 变量名称的合法字符

    SCSS 变量名称中可以使用哪些字符 如果你查看源代码SASS 词法分析器 https github com nex3 sass blob stable lib sass script lexer rb 你会看到的 A hash of re
  • 有没有办法检测 NaN 和 -NaN?

    我想将 lua 数字保存到字符串和句柄中NaN大小写正确 检测任何 NaN 都很容易 x x 然而 我发现只有一种检测方法是NaN or NaN是使用tostring x nan 有更好的方法吗 代替tostring x nan 不方便携带
  • Swift Calendar.当前内存泄漏?

    我在应用程序中遇到了内存问题 我已经能够将其分解为 NSCalendar 一个简单的视图控制器如下所示 class ViewController UIViewController override func viewDidLoad supe
  • 使用输入元素上的修饰键触发单击事件

    我正在为某些功能编写测试 其中涉及用户按住 Shift 键并单击复选框 我在用着 input trigger Event click shiftKey true 来模拟那个 但是当事件监听器被调用时 event shiftKey财产总是被报