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
相同。
更改您收听keyup
或input
的事件:
input.addEventListener('input', function() {
console.log('Is valid?', input.value.search(new RegExp(input.getAttribute('pattern'))) !== -1);
}, false);