我有一个textarea
用户可以在其中输入或粘贴其他人的电子邮件地址,并在按“提交”按钮后向他们发送邀请。每封电子邮件必须用逗号分隔,并且在提交表单之前有效 - 验证由jQuery 验证插件 http://jqueryvalidation.org/ & 多电子邮件方法 https://stackoverflow.com/questions/10352221/jquery-validation-plugin-multiple-email-addresses.
Problem
有些人直接从电子邮件客户端粘贴电子邮件地址,而这些电子邮件通常采用奇怪的格式 - 在实际电子邮件之前包含姓名,或者电子邮件包含在 中。例如:"The Dude" <the.d[email protected] /cdn-cgi/l/email-protection>, "The Dudette" <[email protected] /cdn-cgi/l/email-protection>
Question
我想做的是使用 jquery 从批量文本中提取所有电子邮件地址 https://stackoverflow.com/questions/14440444/extract-all-email-addresses-from-bulk-text-using-jquery,但是我在将这段代码集成到我的代码中时遇到问题textarea
- 我不知道从哪里开始。
我如何使用上面答案中的代码来提取输入到的每封电子邮件textarea
键入逗号后或焦点移离textarea
?所以如果我粘贴"The Dude" <[email protected] /cdn-cgi/l/email-protection>
并输入,
之后或将焦点移开,输入的值将更改为[email protected] /cdn-cgi/l/email-protection
.
我猜是这样的:
var textarea = $('#emails');
textarea.on({
keyup: function(e) {
if (e.which === 188) check();
},
blur: check
});
function check() {
var val = $.trim(textarea.val()),
err = '';
if (!val.length) {
err = 'No input ?';
return;
}
var emails = val.split(','),
notvalid = [],
temp = [];
$.each(emails, function(_,mail) {
mail = $.trim(mail);
if ( mail.length ) {
var m = mail.match(/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)/gi);
if (m) {
temp.push(m);
}else{
temp.push(mail);
notvalid.push(mail)
}
}else{
temp.push(mail);
}
if (notvalid.length) err = 'Not valid emails : ' + notvalid.join(', ');
});
$('#error').html(err);
textarea.val((temp.length ? temp : emails).join(', '));
}
FIDDLE http://jsfiddle.net/242hY/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)