Safari不支持HTML5模式...下面的输入模式可以正常工作,但需要可行的备用。

<input type="password" required pattern="(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$" name="password" id="password">


后备尝试...(来自2011年的另一个答案)

var input = document.getElementsByName('password')[0];


input.addEventListener('change', function() {
        console.log('Is valid?',  input.value.search(new RegExp(input.getAttribute('pattern'))) !== -1);
}, false);

最佳答案

问题是您正在听的事件。在这种情况下,事件change本质上与blur相同。

更改您收听keyupinput的事件:

input.addEventListener('input', function() {
    console.log('Is valid?',  input.value.search(new RegExp(input.getAttribute('pattern'))) !== -1);
}, false);

07-25 21:56
查看更多