Поддерживают ли какие-либо браузеры метод checkValidity () в HTML5? - PullRequest
12 голосов
/ 11 марта 2010

Спецификация HTML5 определяет некоторые очень интересные компоненты проверки, включая pattern (для проверки по регулярному выражению) и обязательно (для пометки поля как требуется ) , Однако, насколько я могу судить, ни один браузер на самом деле не выполняет никакой проверки на основе этих атрибутов.

Я нашел сравнение поддержки HTML5 для всех движков , но там нет информации о проверке. В браузерах, которые я пробовал (Firefox 3.5.8 и Safari 4.0.4), ни у одного объекта нет метода checkValidity(), поэтому я не могу запустить проверки, даже если могу их определить.

Есть ли какая-либо поддержка этой функции, чтобы я мог поэкспериментировать?

Ответы [ 6 ]

8 голосов
/ 11 марта 2010

Конечно. Опера и Хром. Но вы можете проверить себя:

function supportsValidity(){
  var i = document.createElement('input');
  return typeof i.validity === 'object'
}

Вот ссылка на песочницу, где вы можете увидеть Opera и Chrome в действии: http://jsfiddle.net/vaZDn/light/

6 голосов
/ 11 марта 2010

Я проверял следующее в Google Chrome:

<!DOCTYPE html>
<html>
  <body>
    <style>
      .valid { color: #0d0; }
      .invalid { color: #d00; }
    </style>
    <div id="output"></div>
    <script>
      function check(input) {
        var out = document.getElementById('output');
        if (input.validity) {
          if (input.validity.valid === true) {
            out.innerHTML = "<span class='valid'>" + input.id +
                            " is valid</span>";
          } else {
            out.innerHTML = "<span class='invalid'>" + input.id +
                            " is not valid</span>";
          }
        }
        console.log(input.checkValidity());
      };
    </script>
    <form id="testform" onsubmit="return false;">
      <label>Required:
        <input oninput="check(this)" id="required_input" 
               required />
      </label><br>
      <label>Pattern ([0-9][A-Z]{3}):
        <input oninput="check(this)" id="pattern_input" 
               pattern="[0-9][A-Z]{3}"/>
      </label><br>
      <label>Min (4):
        <input oninput="check(this)" id="min_input" 
               type=number min=4 />
      </label><br>
    </form>
  </body>
</html>

Как ни странно, свойство <element>.validity.valid, кажется, работает правильно, но вызов <element>.checkValidity() всегда возвращает true, поэтому похоже, что он еще не реализован.

4 голосов
/ 12 октября 2012

checkValidity () допускает работу как с формой в целом, так и с отдельным вводом. <ч /> «Кроме того, метод checkValidity () может быть выполнен как для отдельного поля, так и для формы в целом, и возвращает значение true или false. Выполнение метода также программным образом инициирует недопустимое событие для всех недопустимых полей или, если выполняется на одно поле, только для этого элемента. "

взяты из списка отдельно - http://www.alistapart.com/articles/forward-thinking-form-validation/

<ч /> "form. checkValidity () Возвращает true, если все элементы управления формы действительны; в противном случае возвращает false. http://www.w3.org/TR/2011/WD-html5-20110525/association-of-controls-and-forms.html#constraint-validation

"valid = element. CheckValidity () Возвращает true, если значение элемента не имеет проблем с валидностью; ложь в противном случае. Создает недопустимое событие в элементе в последнем случае. " http://www.w3.org/TR/2011/WD-html5-20110525/forms.html#client-side-form-validation


W3C - рабочий проект.

3 голосов
/ 11 марта 2010

Согласно Погружение в HTML5 :

Когда пользователь Opera пытается отправить форму с полем, Opera автоматически предлагает RFC-совместимую проверку электронной почты, даже если сценарии отключены. Opera также предлагает проверку веб-адресов, введенных в поля, и номеров в полях. Проверка чисел даже учитывает атрибуты min и max, поэтому Opera не позволит вам отправить форму, если вы введете слишком большое число.

(Цитируемый абзац является последним в статье.)

Насколько я знаю - и, учитывая, что я не тестировал Opera 10, я верю их словам - ни один другой браузер пока не проверяет формы автоматически.

1 голос
/ 23 ноября 2011

Если вы имеете в виду checkValidity (), то да, Opera поддерживает это.

Раскрытие Тханг: я работаю на Оперу.

1 голос
/ 11 марта 2010

Opera 10 имеет некоторую проверку формы HTML5 http://dev.opera.com/articles/view/improve-your-forms-using-html5/. Но, я не думаю, что она имеет checkValidation ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...