此处为Javascript noob。在我试图为我的网络应用程序实现的mfa输入字段验证方面有点困难。
而不是让用户点击";提交";按钮在输入字段中输入mfa代码后,我想在字段长度达到6个字符时简单地启动我的后端服务。我在许多网站上看到过这种优雅的做法。
在我的例子中,当我点击字段外时,它会连续激发lambdas函数4次。我不太明白为什么它发射了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函数调整为仅包含"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);
}
});