Spec-Zone.ru › Web APIs

ValidityState: свойство customError

Базовая поддержка Широко распространена

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с декабря 2018 года.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Только для чтения customError свойство интерфейса ValidityState возвращает true , если элемент не соответствует требованиям валидации, заданным в наборе пользовательской валидации методом элемента setCustomValidity().

Значение

Булево значение, которое равно true , если пользовательское сообщение об ошибке установлено непустой строкой.

Примеры

Обнаружение пользовательской ошибки

В этом примере, setCustomValidity() устанавливает пользовательское сообщение об ошибке, когда отправка формы содержит данные пользователя, которые считаются недопустимыми. Кнопка «Проверить ввод» вызывает reportValidity(), которая отображает сообщение о валидации под элементом, если пользователь вводит значения, которые не соответствуют ограничениям формы.

Если вы введете текст «хорошо» или «отлично» и попробуете проверить ввод, поле будет помечено как недопустимое, пока пользовательское сообщение об ошибке не будет очищено (установлено в пустую строку). Для сравнения, есть атрибут minlength на элементе ввода, который позволяет продемонстрировать tooShort состояние валидации, когда пользователь вводит меньше двух символов. Когда значение в элементе управления формы является недопустимым, даже если нет пользовательской ошибки, у ввода будет красная рамка.

HTML

<pre id="log">Validation failures logged here...</pre>
<input
  type="text"
  id="userInput"
  placeholder="How do you feel?"
  minlength="2" />
<button id="checkButton">Validate input</button>

CSS

input:invalid {
  border: red solid 3px;
}

JavaScript

const userInput = document.getElementById("userInput");
const checkButton = document.getElementById("checkButton");
const logElement = document.getElementById("log");

function log(text) {
  logElement.innerText = text;
}

const check = (input) => {
  // Handle cases where input is too vague
  if (input.value == "good" || input.value == "fine") {
    input.setCustomValidity(`"${input.value}" is not a feeling.`);
  } else {
    // An empty string resets the custom validity state
    input.setCustomValidity("");
  }
};

userInput.addEventListener("input", () => {
  check(userInput);
});

const validateInput = () => {
  userInput.reportValidity();
  if (userInput.validity.customError) {
    // We can handle custom validity states here
    log("Custom validity error: " + userInput.validationMessage);
  } else {
    log(userInput.validationMessage);
  }
};

checkButton.addEventListener("click", validateInput);

Результат

Спецификации

Спецификация
HTML
# dom-validitystate-customerror-dev

Совместимость с браузерами

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на IOS Samsung Internet WebView Android
customError 4 12 4 12.1 5 18 4 12.1 5 1.0 ≤37

См. также

  • Свойства ValidityState badInput, valid.
  • Валидация ограничений
  • Формы: Валидация данных формы

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/ValidityState/customError

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API