0

我有这个代码:

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="">
Vous avez activé la touche majiscule

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

问题是什么?

4

1 回答 1

1

当满足条件时,您不会退出该功能,即密码在禁止列表中。你想要的是更像这样的东西:

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("");- 它在循环之外的位置。

于 2013-04-21T15:07:56.367 回答