2016-03-31 2 views
0

Я хочу использовать проверку HTML5 type="email" для создания функции для проверки электронной почты.Подтвердить электронную почту Используя «Скрытую форму»?

Что я хотел бы сделать, если это возможно, это создать форму и приложить вход, который type="email", чтобы я мог попробовать его отправить. Затем я могу увидеть, работает ли он или нет, чтобы вернуть, действительно ли письмо было отправлено по электронной почте.

Что-то вроде этого, но я знаю, что это не работает:

function isEmail (string) { 
    var frm = document.createElement('form'); 
    var input = document.createElement('input'); 

    input.setAttribute('type', 'email'); 
    input.setAttribute('action', 'javascript:void(0)'); 
    input.setAttribute('value', string); 

    frm.appendChild(input); 

    // I know this doesn't work 
    if (!! frm.submit()) return true; 
    else return false; 
} 

Можно ли подтвердить адрес электронной почты, таким образом?

+0

Общий отказ от ответственности: синтаксическая достоверность адреса электронной почты не означает, что адрес электронной почты фактически существует. Так что не пытайтесь с этим справиться. Все, что вам нужно сделать, это ухватить опечатки от пользователя, для фактической проверки требуется электронное письмо со ссылкой или паролем или что-то еще. –

+0

Наверняка, я просто пытаюсь убедиться, что отправленное письмо является синтаксически правильным. – Martin

+1

Ну, с точки зрения «синтаксической корректности», см. Примечание по второй ссылке, которую я опубликовал: _ «Это требование является преднамеренным нарушением RFC 5322, которое определяет синтаксис для адресов электронной почты, которые одновременно слишком строги (до Символ «@»), слишком расплывчатый (после символа «@») и слишком слабый (позволяющий использовать комментарии, пробельные символы и цитируемые строки в манерах, незнакомых большинству пользователей) ». _ - so _definitions_ on то, что составляет «действительный» адрес электронной почты, уже отличается в зависимости от того, кого вы спрашиваете. Обычно рекомендуется проводить проверку менее строго необходимой. – CBroe

ответ

1

Как https://www.w3.org/TR/html5/forms.html#e-mail-state-(type=email) говорит,

Агенты пользователей могут позволить пользователю установить значение в строку, которая не является действительным адресом электронной почты

, так что я, вероятно, предпочел бы не полагаться на том.

Плюс, https://www.w3.org/TR/html5/forms.html#valid-e-mail-address имеет (JS-совместимое) регулярное выражение, которое выполняет ту же проверку, что и браузер, при проверке поля ввода электронной почты - так что я, вероятно, просто воспользуюсь этим.


Но, вы должны настаивать на использовании поля формы для этого - HTML5 также предоставляет API, чтобы проверить, если поля формы являются действительными, см https://www.w3.org/TR/html5/forms.html#the-constraint-validation-api - так что нет никакой необходимости фактически представить форму.

Я не проверял совместимость браузеров для типа ввода = email - но с помощью решения regex у вас будет что-то, что должно работать в каждом браузере, тогда как если вы будете полагаться на HTML5, это может оказаться неудачным в некоторых, которые еще не догнали ,

+0

Мне нравится этот ответ, и я буду использовать это регулярное выражение в своем продукте. Мне все еще интересно узнать мой смелый вопрос: что я пытаюсь сделать * возможно *, хотя и не рекомендуется? – Martin

+0

См. Мое редактирование. HTML5 также указывает API для проверки полей формы для достоверности. – CBroe

+0

Да, только что увидел. Подождите несколько минут, чтобы я мог отметить как правильный – Martin