У меня есть форма, в которой поле ввода принимает сообщения электронной почты. Я хочу ограничить электронные письма, введенные пользователем, на 2 или какое-то другое значение.
Все работает, за исключением того, что после последнего расширения домена электронной почты мой код ограничивает последние символы расширения домена.
JSFiddle здесь: http://jsfiddle.net/fd1xdohg/
Вот мой код:
HTML:
<input id="emails"></input>
<label id="lbl"></label>
JS:
$("#emails").keypress(function () {
pEmails_tmp = extractEmails($('#emails').val());
if (pEmails_tmp.length >= 2) {
$("#emails").attr('maxlength', $('#emails').val().length);
}
});
function extractEmails(text) {
return text.match(/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)/gi);
}
Попробуйте дать 2 письма, разделенных пробелом (или тем, что вы хотите), и вы увидите, что он не позволит вам писать расширение домена после ".". точка.
Любые идеи о том, как ограничить поле ввода для n электронных писем?
После того, как вы написали первый символ домена домена, он квалифицирует регулярное выражение и не позволяет вам вводить текст.
Способ, которым я работал вокруг этого, заключался в том, чтобы потребовать пробел в конце второго, а затем не пропускать больше.
return text.match(/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)\s/gi);
// ^^ there