问题描述
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);
}
});