Jquery应该只触发一个事件
我已经编写了两个脚本,一个用于Enter按钮单击,另一个用于更改,但这两个事件都会触发,我想如果Enter按钮被keyup/keydown/keypress/paste单击,那么更改也不会在keyup/keydown/keypress/paste上触发,只会触发一个事件Jquery应该只触发一个事件,jquery,Jquery,我已经编写了两个脚本,一个用于Enter按钮单击,另一个用于更改,但这两个事件都会触发,我想如果Enter按钮被keyup/keydown/keypress/paste单击,那么更改也不会在keyup/keydown/keypress/paste上触发,只会触发一个事件 $('#txtName').on('keypress keyup paste', function (e) { var keyCode = e.keyCode || e.which; if (keyCode ==
$('#txtName').on('keypress keyup paste', function (e) {
var keyCode = e.keyCode || e.which;
if (keyCode === 13) {
AddName($('#txtName').val());
}
});
$('#txtName').on({
change: function () { AddName($('#txtName').val()); }
});
因为您正在对密钥侦听器使用两个事件。只需使用其中一个
keypress
或keyup
事件
并添加一个事件.preventDefault()
对于停止事件,它不会触发更改
事件
$('#txtName')。在('keyup-paste',函数(e)上{
var keyCode=e.keyCode | | e.which;
如果(键代码===13){
e、 预防默认值();
AddName($('#txtName').val(),e);
}
});
$('#txtName')。在({
更改:函数(e){AddName($('#txtName').val(),e);}
});
函数AddName(值,e)
{
console.log(e.type+“-”+值);
}
因为您正在对键侦听器使用两个事件。只需使用其中一个
keypress
或keyup
事件
并添加一个事件.preventDefault()
对于停止事件,它不会触发更改
事件
$('#txtName')。在('keyup-paste',函数(e)上{
var keyCode=e.keyCode | | e.which;
如果(键代码===13){
e、 预防默认值();
AddName($('#txtName').val(),e);
}
});
$('#txtName')。在({
更改:函数(e){AddName($('#txtName').val(),e);}
});
函数AddName(值,e)
{
console.log(e.type+“-”+值);
}
当用户按下某个键时,keypress事件触发,当用户释放该键(按下后)时,keyup事件触发。因此,如果您希望一次触发一个事件,您应该使用keypress或keyup。当用户按下一个键时,keypress事件触发,当用户释放键(按下后)时,keyup事件触发。因此,如果希望一次触发一个事件,则应使用keypress或keyup。如果
#txtName
此处有一个输入框,则更改事件将延迟到元素失去焦点,并且如果值已从以前的状态更改,则会触发该事件
根据您的需求,您可以组合jquery.on
上的所有事件,并在处理程序中添加逻辑,如下所示:
$('#txtName').on('keypress keyup paste change', function (e) {
var keyCode = e.keyCode || e.which;
if (e.type == "change") {
AddName($('#txtName').val());
}
else if (keyCode === 13) {
AddName($('#txtName').val());
}
});
function AddName() {
// Your code here
}
如果此处的#txtName
是一个输入框,则更改
事件将被延迟,直到元素失去焦点,如果值已从以前的状态更改,则会触发该事件
根据您的需求,您可以组合jquery.on
上的所有事件,并在处理程序中添加逻辑,如下所示:
$('#txtName').on('keypress keyup paste change', function (e) {
var keyCode = e.keyCode || e.which;
if (e.type == "change") {
AddName($('#txtName').val());
}
else if (keyCode === 13) {
AddName($('#txtName').val());
}
});
function AddName() {
// Your code here
}
keypress
和keyup
都是针对单个按键行程触发的(在不同阶段)。您期望的是什么?在enter keypress或keyup时,keypress fire或keyup fire,如果单击enter,则更改事件不应触发keypress
,并且keyup
都会在单个按键行程中触发(在不同阶段)。您期望的是什么?在输入keypress或keyup时,keypress激发或keyup激发,如果单击enter,则不应激发更改事件