willValidate
- это свойство, которое говорит, может ли валидационный ввод, а не если он действителен или нет. Единственный момент, когда willValidate
является ложным, - это если элемент ввода отключен или тому подобное.
См. http://www.html5rocks.com/en/tutorials/forms/constraintvalidation/# toc-willValidate
Используйте field.validity.valid
вместо этого, чтобы проверить достоверность.
(function() {
var field = document.querySelector('input[type=text]');
document.querySelector('button').addEventListener('click', function() {
console.log('Validates: ', field.validity.valid);
console.log('Value missing: ', field.validity.valueMissing);
}, false);
})();
В документации предлагается использовать .checkValidity()
, который
Method Description
checkValidity () Возвращает true, если значение элемента не имеет проблем с действительностью ; false в противном случае. Если элемент недействителен, этот метод также вызывает недопустимое событие в элементе.
blockquote>while (как правильно сказано в @ soktinpk )
.willValidate
просто флага как доступный для проверки, а не для прохождения проверки.Таким образом, я рекомендую использовать это:
function() { alert('Validates: '+field.checkValidation()); alert('Value missing: '+field.validity.valueMissing); }
вне темы,
alert
является ужасным инструментом отладки. Рассмотрим использованиеconsole.log
илиdebugger;