gpt4 book ai didi

javascript - 如何捕获 "blur"或 "keypress"在 javascript jquery 中输入 13 - 或者两者都不是

转载 作者:行者123 更新时间:2023-12-03 05:31:09 25 4
gpt4 key购买 nike

我想捕获表单字段上的“输入”和“模糊”。如果我点击“enter”和“tab”,它也会触发模糊事件...只有一个触发器,所以“OR”而不是“AND”。

$('#login-input-password').bind('blur keypress', function(e){
if (e.type == 'blur' || e.keyCode == 13) {
// do something only once, not twice
// e.g., if I hit "[enter"] and tab to blur, I don't want it to call twice...
}
});

答案已接受已实现

函数使用

function bindTriggerEnterOrBlur(selector,myFunction)
{
$(selector).bind('blur keypress', function(e){
if (e.type == 'blur' || e.keyCode == 13) {
if (!$(selector).data('has-triggered')) {
$(selector).data('has-triggered', true);
// do something only once, not twice
myFunction();
// e.g., if I hit "[enter"] and tab to blur, I don't want it to call twice...
}
}
});

$(selector).bind('focus', function(e){
$(selector).data('has-triggered', false);
$(selector).select();
});
}

调用函数

bindTriggerEnterOrBlur('#login-input-email',submitLoginEmail);

其中,submitLoginEmail 是为触发器执行某些操作的函数,例如,

function submitLoginEmail()
{
// submit on enter...
var email = $("#login-input-email").val();
if(validEmail(email))
{
submitNextLogin();
}
}

最佳答案

如果我的要求正确,您只想执行一次回调,但目前它执行了两次。

如果是这种情况,那么您将需要某种方法来指示回调是否已被调用。

一种方法是使用数据属性

$('#login-input-password').bind('blur keypress', function(e){
if (e.type == 'blur' || e.keyCode == 13) {
if (!$(this).data('done') {
$(this).data('done', true);
// do something only once, not twice
// e.g., if I hit "[enter"] and tab to blur, I don't want it to call twice...
}
}
});

您还需要另一个事件处理程序来重置元素的完成属性

$('#login-input-password').bind('focus', function(e) {
$(this).data('done', false);
});

关于javascript - 如何捕获 "blur"或 "keypress"在 javascript jquery 中输入 13 - 或者两者都不是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40935683/

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