按键处理程序取消事件
keypress handler canceling the event
我有以下代码
jQuery('#parent').on('keypress', '.textbox', function(e) {
var btn = jQuery(this).closest('tr').find('.btn');
if (btn.length) {
btn.triggerHandler('click');
}
});
此代码是一个委托的按键处理程序,它正在侦听具有 class 值“.textbox”的文本框事件。
处理程序找到带有 class“.btn”的按钮并调用其点击处理程序,其中有一个 ajax 调用。
问题是这似乎阻止了事件完成,即如果框中的值为“2”并且我输入了“3”,处理程序将执行但框中的值仍然为“2”的“23”。
注释掉btn triggerHandler语句后正常
为什么会这样?
我认为你需要 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">
使用 keyup
而不是 keypress
。正如在您的脚本中一样,您触发了另一个事件。
jQuery('#parent').on('keyup', '.textbox', function(e) {
var btn = jQuery(this).closest('tr').find('.btn');
if (btn.length) {
btn.triggerHandler('click');
}
});
keypress
被 triggerHandler
打断,因此不允许按键的默认操作发生。而 keyup
将首先执行默认操作,然后监听处理程序。
尝试使用 [=g13=] 而不是 'keypress' 或 'keyup'
$(document).ready(function(){
$("input").onchange(function(){
var rs= $(this).val();
alert(rs);
$("input").css("background-color", "pink");
});
});
我有以下代码
jQuery('#parent').on('keypress', '.textbox', function(e) {
var btn = jQuery(this).closest('tr').find('.btn');
if (btn.length) {
btn.triggerHandler('click');
}
});
此代码是一个委托的按键处理程序,它正在侦听具有 class 值“.textbox”的文本框事件。 处理程序找到带有 class“.btn”的按钮并调用其点击处理程序,其中有一个 ajax 调用。
问题是这似乎阻止了事件完成,即如果框中的值为“2”并且我输入了“3”,处理程序将执行但框中的值仍然为“2”的“23”。
注释掉btn triggerHandler语句后正常
为什么会这样?
我认为你需要 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">
使用 keyup
而不是 keypress
。正如在您的脚本中一样,您触发了另一个事件。
jQuery('#parent').on('keyup', '.textbox', function(e) {
var btn = jQuery(this).closest('tr').find('.btn');
if (btn.length) {
btn.triggerHandler('click');
}
});
keypress
被 triggerHandler
打断,因此不允许按键的默认操作发生。而 keyup
将首先执行默认操作,然后监听处理程序。
尝试使用 [=g13=] 而不是 'keypress' 或 'keyup'
$(document).ready(function(){
$("input").onchange(function(){
var rs= $(this).val();
alert(rs);
$("input").css("background-color", "pink");
});
});