javascript - 按键处理程序取消事件

标签 javascript jquery events jquery-events

我有以下代码

 jQuery('#parent').on('keypress', '.textbox', function(e) {
    var btn = jQuery(this).closest('tr').find('.btn');
    if (btn.length) {
        btn.triggerHandler('click');
    }
});

此代码是一个委托(delegate)的按键处理程序,它正在监听具有类值“.textbox”的文本框事件。 处理程序找到类为“.btn”的按钮并调用其中包含 ajax 调用的点击处理程序。

问题是这似乎阻止了事件的完成,即如果框中的值为“2”并且我输入了“3”,处理程序将执行但框中的值仍然是“2”而不是“a” “23”。

注释掉btn triggerHandler语句就正常了。

为什么会这样?

最佳答案

使用 keyup 而不是 keypress。正如在您的脚本中一样,您触发了另一个事件。

jQuery('#parent').on('keyup', '.textbox', function(e) {
   var btn = jQuery(this).closest('tr').find('.btn');
   if (btn.length) {
     btn.triggerHandler('click');
   }
});

keypresstriggerHandler 中断,因此不允许按键按下的默认操作发生。而 keyup 将首先执行默认操作,然后监听处理程序。

关于javascript - 按键处理程序取消事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37044066/

相关文章:

javascript - WizardStep 的完成事件未触发

javascript - 如何在页面刷新时阻止用户单击任何其他按钮(模态窗口解决方案的一部分)

php - 使用 ajax 重新加载和 WordPress 插件

Jquery查找表中项目的多个条件

C#/.NET - WinForms - 实例化一个表单而不显示它

Java 事件监听与 AS3 的比较

javascript - 选择具有最高值和第二高值的表格单元格

javascript - 处理 Angular 5 组件中的模型更改(双向绑定(bind))

jquery - CSS 过渡与 Webkit 上的百分比宽度混淆(错误?)

.net - 检测水平鼠标滚轮移动