HTML5 setCustomValidation在Else上失败

HTML5 setCustomValidation fails on Else

本文关键字:失败 Else setCustomValidation HTML5      更新时间:2023-09-26

我有这样的代码:

function checkPassword(pass1, pass2) {
var p1 = document.getElementById(pass1)
var p2 = document.getElementById(pass2)
if (p1.value != p2.value) {
    p2.setCustomValidity('verifiez que vous avez ecrit le meme mot de passe');
} else {
    p2.setCustomValidity('')
}}
function Banned(password) {
pas = document.getElementById(password)
ban_list = ["111111", "11111111", ...]
for (var i = 0; i < ban_list.length; i++) {
    if (pas.value == ban_list[i]) {
    pas.setCustomValidity("Mot de Passe Facile, Veuillez le changer")
   } else
    {
      pas.setCustomValidity("")}
}}

html:(偶数是OnBlur)

<label for="pass1">Votre mot de passe</label>
<input class="keyboardInput" id="pass1" name="pass1" type="password" required onkeypress="checkCapsLock(event);" placeholder="" pattern=".{6,}" title="" onblur="checkPassword('pass1','pass2'); Banned('pass1')">
<label for="pass2">Confirmez le</label>
<input class="keyboardInput" id="pass2" name="pass2" type='password' required onkeypress="checkCapsLock(event);" placeholder="" onblur="checkPassword('pass1','pass2'); Banned('pass1')" title="">
你很活跃。伟大的触觉

第一个代码工作,如果我设置两个不同的密码,它会提醒我,如果我修改它,警报消失。但在第二个(禁止)中,它将不起作用(用户不被警告),如果我删除Else部分,它将起作用,但如果它将检测到列表中的单词,即使用户使用不属于列表的字符串修改值,它也不会消失。

有什么问题吗?

当满足条件时,即密码在禁止列表中,则不退出该函数。您想要的是更像这样的内容:

for (var i = 0; i < ban_list.length; i++) {
  if (pas.value == ban_list[i]) {
    pas.setCustomValidity("Mot de Passe Facile, Veuillez le changer");
    return;
  }
}
pas.setCustomValidity("");

这样,如果密码在禁用列表中,您将始终收到警报,如果不在禁用列表中,警报将消失。注意pas.setCustomValidity("");的位置,它在循环之外