gpt4 book ai didi

javascript - 添加键码事件处理程序后如何将其删除?

转载 作者:行者123 更新时间:2023-11-28 13:20:40 25 4
gpt4 key购买 nike

在为元素设置按键事件处理程序后,如何删除按键事件处理程序?

我有一个 ID 为 #sb 的搜索框,它会在通过自动完成输入内容时列出搜索建议,然后在按 Enter 键时转到第一个建议(如果有)。

如果用户输入不存在的搜索字符串,它工作正常。按 ENTER 键却无济于事。

但是,如果返回有效的搜索建议,然后用户改变主意并决定搜索没有搜索建议的另一个字符串...按 ENTER 仍会转至先前建议的搜索结果。

例如,如果用户搜索“热狗”,将其完全删除,然后搜索“asgdoksadjgoawhet”,那么在按 Enter 键后,它们将被重定向到 http://example.com/hot-dogs ,而实际上什么都不应该发生。

下面是我的自动完成代码的响应部分:

    response: function( event, ui ) {

if(typeof ui.content[0] == 'undefined') {

//no search results exist

//make enter do nothing
$('#sb').keypress(function(e) {
if(e.which == 13) {
e.preventDefault(); //does not work
$('#sb').off('keypress', '#sb'); //does not work, either
}
});

} else {

//search results exist

//make ENTER go to the first suggested result
$('#sb').on('keypress', function(e) {
if(e.which == 13) {
window.location.href = 'http://example.com/'+ui.content[0].id;
}
});

}
}

也许我不应该使用匿名函数吗?

最佳答案

如果使用后想直接解绑可以使用.one

这只会触发事件一次:

$('#sb').one('keypress', function(e) {
if(e.which == 13) {
//do stuff
}
});

如果您想在任何其他时间解除事件绑定(bind),您可以执行以下操作:

var kbEvent = $('#sb').on('keypress', function(e) {
if(e.which == 13) {
//do stuff
}
});

.... some other code ...
$('#sb').off(kbEvent);

关于javascript - 添加键码事件处理程序后如何将其删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33378946/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com