多次执行Javascript事件的输入字段

问题描述

Javascript 菜鸟在这里。关于我正在尝试为我的网络应用实现的 mfa 输入字段验证,有点卡住了。

我不想让用户在输入字段中输入 mfa 代码后点击“提交”按钮,而是想在字段长度达到 6 个字符时简单地触发我的后端服务。我在许多网站上都看到过这种优雅的做法。

就我而言,当我单击该字段时,它会连续 4 次触发 lambdas 函数。我不太明白为什么它会触发 4 次,而不是一次?

我的假设是因为我试图同时考虑按键、按键、模糊和更改?通过这样做,我试图考虑多种用户行为,例如:字段焦点丢失、字段外的选项卡或“输入”键按下。

$("#login2fa").inputmask("9 9 9 9 9 9").on("keyup keypress blur change",function() {
    var $el = $(this);

    var code = $el.val().replace(/[^\d]/g,'');
    if (code.length === 6) {
        lambdas.userLoginMfaConfirm(session_token,code,handleConfirmResult);
    }
});

解决方法

回答我自己的问题,感谢@camillo 的评论!

事实证明,有多个 .on 函数会多次调用。通过将 on 函数调整为仅包含“keyup”,它可以按预期工作。

$("#login2fa").inputmask("9 9 9 9 9 9").on("keyup",function() {
    var $el = $(this);

    var code = $el.val().replace(/[^\d]/g,'');
    if (code.length === 6) {
        lambdas.userLoginMfaConfirm(session_token,code,handleConfirmResult);
    }
});

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...