按键处理程序取消事件

keypress handler canceling the event

本文关键字:取消 事件 程序 处理      更新时间:2023-09-26

我有以下代码

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

该代码是一个委托的按键处理程序,它正在侦听具有类值"的文本框的事件;。文本框";。处理程序找到类为"的按钮;。btn"&调用其中包含ajax调用的点击处理程序。

问题是这似乎阻止了事件的完成,即如果框中的值是"0";2〃&我键入一个";3〃;,处理程序执行,但框中的值保持为"0";2〃;而不是";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将首先执行默认操作,然后侦听处理程序。

我认为您需要设置函数键。

$(document).ready(function(){
   $("input").keyup(function(){
var rs= $(this).val();
  alert(rs);
        $("input").css("background-color", "pink");
    });
  });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
Enter your value: <input type="text">

尝试使用"onchange"代替"keypress"或"keyup"

  $(document).ready(function(){
  $("input").onchange(function(){
  var rs= $(this).val();
  alert(rs);
  $("input").css("background-color", "pink");
  });
});