如何停止重复的HTML5约束验证提示?

使用html5的约束验证时,每次按键时我都会得到连续的提示。

    <div class="md-form mb-5">
        <input type="username" id="regusername" name='username' class="form-control validate" 
               value = "<?php echo htmlspecialchars($firstName); ?>" required minlength="2" maxlength="30"/>
        <label data-error="wrong" data-success="right" for="regusername">Your username</label>
        <span id='usernameStatus2'></span>

    </div>

我监听焦点并检查用户名是否可用。

$("#regusername").focusout(function (e) {
    var el = document.getElementById(e.target.id);
    if (!el.reportValidity()) {
        $(el).closest("input,textarea").removeclass('is-valid').addClass("is-invalid");
    } else {
        $(el).closest("input,textarea").removeclass('is-invalid').addClass("is-valid");
       checkAvailability();
    }

});

我遇到的问题是每次按键后都会重复验证提示。 1.用户输入无效的用户名,然后单击选项卡。 2.调焦功能被调用。 3.如果根据html5的checkValidity()有效,则调用我的函数checkAvailability()。 4.如果不可用,则将CustomValidity()设置为错误消息,即“不可用”,调用checkValidity()。 5.当焦点仍然放在输入上时,当用户按任意键时,自定义有效性msg提示会造成混乱,因为尽管反复提示,更新后的输入值仍然可用。

HTML5验证程序将继续关注无效输入,并在每次按键时重复无效提示,因此,如果用户名'testuser'不可用,则在'testuser'之后键入其他字符(如'testuser2')将导致无效提示,实际上只有在真正的焦点事件之后才知道的“ testuser2”可用。

如何停止这些重复的提示?

* edit-没什么大不了的,但是还想知道为什么在通过验证后使用.focus()将焦点放在下一个输入上时,随后的输入为什么触发聚焦。 chrome调试器打开后无法重复,因为那样就不会发生。我在对焦功能中尝试了e.preventDefault()和e.stopPropagation()。

iCMS 回答:如何停止重复的HTML5约束验证提示?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/1989832.html

大家都在问