Javascript 检测文本何时输入文本区域并相应更改
我有一个Javascript 检测文本何时输入文本区域并相应更改,javascript,jquery,forms,jquery-validate,Javascript,Jquery,Forms,Jquery Validate,我有一个文本区,用户可以在这里输入或粘贴其他人的电子邮件地址,并在按下提交按钮后向他们发送邀请。在提交表格之前,每封电子邮件必须用逗号分隔并有效-验证由& 问题 有些人直接从他们的电子邮件客户端粘贴电子邮件地址,这些电子邮件通常采用奇怪的格式——在实际电子邮件之前包含姓名,或者电子邮件用包装。例如: “花花公子”、“花花公子” 问题 我想做的是,但是我在集成这段代码与我的textarea工作时遇到了问题-我不知道从哪里开始 键入逗号后或焦点从textarea移开时,如何使用上述答案中的代码提取输
文本区
,用户可以在这里输入或粘贴其他人的电子邮件地址,并在按下提交按钮后向他们发送邀请。在提交表格之前,每封电子邮件必须用逗号分隔并有效-验证由&
问题
有些人直接从他们的电子邮件客户端粘贴电子邮件地址,这些电子邮件通常采用奇怪的格式——在实际电子邮件之前包含姓名,或者电子邮件用<>包装。例如:
“花花公子”、“花花公子”
问题
我想做的是,但是我在集成这段代码与我的textarea
工作时遇到了问题-我不知道从哪里开始
键入逗号后或焦点从
textarea
移开时,如何使用上述答案中的代码提取输入到textarea
的每封电子邮件?因此,如果我粘贴“花花公子”
并在其后面键入,
,或将焦点移开,输入的值将更改为。dude@gmail.com
您可以使用eventhandler检测文本区域(或其他输入字段)何时更改。Jquery支持多个事件(请看这里)。在这种特殊情况下,我应该使用keyup事件来触发extractEmails函数。这样,您的提取将是“活的”。但是,也可以捕捉模糊或更改事件
使用keyup事件处理程序
我猜是这样的:
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(', '));
}
这将在您失去焦点或按要求输入逗号时,将输入的文本转换为电子邮件:
function extractEmails (text)
{
return text.match(/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)/gi);
}
$("#emailtext").on('keypress blur', function(e) {
if (e.which === 44 || e.type =="blur")
{
$('#emails').text(extractEmails($("#emailtext").val()));
}
});
这是小提琴:
类似问题检查此处,以获取他引用的同一问题的答案。事实上,他的问题一定是“如何将事件处理程序绑定到textarea”,请在逗号后重新考虑验证。。在最后一封电子邮件之后,您不会按逗号键。。您不想验证它吗?例如,更改后2秒?@Dropout是的,这就是为什么我还需要焦点移到其他位置时验证:)
function extractEmails (text)
{
return text.match(/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)/gi);
}
$("#emailtext").on('keypress blur', function(e) {
if (e.which === 44 || e.type =="blur")
{
$('#emails').text(extractEmails($("#emailtext").val()));
}
});