2014-12-23 3 views
1

У меня есть форма, в которой некоторые входы, такие как электронная почта, проверяются с помощью регулярного выражения в HTML5. Мне нужно проверить другие входы, где я не могу использовать шаблон. Мне нужно заглянуть в базу данных и искать дубликаты. Могу ли я проверить, вызвав какую-то функцию, а не используя шаблон?Проверка ввода HTML5 с функцией, а не с шаблоном

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

+1

Это можно сделать, но вы бы дистанцирование себя от проверки HTML5 стиля, тем более, что ваша функция будет должны быть асинхронными для поиска базы данных. (Я на 99% уверен, что «предварительные HTML5» фреймворки JS находятся там, поэтому вы можете попробовать любой из них) – Katana314

+0

Вы можете сделать это, просто сделайте и запрос AJAX для проверки ваших данных против БД. – ianaya89

+0

Вы можете использовать jQuery, чтобы легко достичь этого эффекта. Вы можете использовать функцию jQuery.change(), чтобы в основном проверять входные данные на лету, используя jQuery.ajax() или конкретные функции jquery.post()/jquery.get(). – 9997

ответ

1

Да, это возможно!

Вам просто нужно получить свой элемент ввода (через обратный вызов или document.getElementBy ...) и вызвать

setCustomValidity('message here')
. Если вход действителен, вы можете позвонить
setCustomValidity('')
, чтобы удалить сообщение об ошибке.

Например:

<input name='email' onchange='checkEmail(this)'></input> 

затем определяют checkEmail ...

function checkEmail(element) { 
    ajaxCallToServer(element.value, function callback(hypotheticalResponse) { 
     if (hypotheticalResponse.isOk) { 
      element.setCustomValidity(''); 
     } else { 
      element.setCustomValidity('Sorry that email is already taken!'); 
     } 
    }); 
} 
0

Нет, проверка HTML5 не имеет функции. Это в принципе язык-агностик и даже не постулирует поддержку JavaScript в браузере. Он поддерживает только проверки, описанные в спецификациях HTML5.

Смежные вопросы