Это небольшое поле пароля HTML5 отлично работает БЕЗ атрибута oninvalid (шаблон говорит: минимум 6 символов):
<form>
<input type="password" name="user_password_new" pattern=".{6,}" required />
<input type="submit" name="register" value="Register" />
</form>
Смотрите jsFiddle здесь.
Но когда я добавляю атрибут oninvalid, который выдает собственное сообщение об ошибке, когда пользовательский ввод не соответствует шаблону, все поле NEVER становится действительным, см. здесь код:
<form>
<input type="password" name="user_password_new" pattern=".{6,}" oninvalid="setCustomValidity('Minimum length is 6 characters')" required />
<input type="submit" name="register" value="Register" />
</form>
Смотрите jsFiddle здесь.
Вы можете определить ошибку?