jquery电子邮件提取器实时从文本区域

jquery email extractor live from textarea

本文关键字:文本 区域 实时 电子邮件 提取 jquery      更新时间:2023-09-26

好的,所以我有 2x 具有不同 id 的文本区域。我正在尝试提取粘贴到第一个文本区域然后显示到第二个文本区域的电子邮件。我知道我的jquery工作是从页面中的文本中提取和排序电子邮件,但我似乎无法让它与文本区域一起使用。

我的文本区域代码如下:

<textarea id="email-extractor" class="email-extractor-textarea"></textarea>
<textarea id="email-extracted" class="email-extractor-textarea"></textarea>

我的代码如下:

<script>
function extractEmails (text)
{
    return text.match(/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+'.[a-zA-Z0-9._-]+)/gi);
}
function eliminateDuplicates (arr) {
    var i;
    var len=arr.length;
    var out=[];
    var obj={};
    for (i=0;i<len;i++) {
        obj[arr[i]]=0;
    }
    for (i in obj) {
        out.push(i);
    }
    return out;
}
var emailsFullList = [];
$('#email-extractor').keyup(function( index ) {
    var emails = extractEmails($(this).text());
    if (!emails) {
       $('#email-extracted').text('** No emails in comment');
    } else if (emails.length < 3) {
        emailsFullList = emailsFullList.concat(emails);
    } else {
        $('#email-extracted').text('** Ignoring comment, too many email addresses ('+emails.length+').');
    }
});
emailsFullList = eliminateDuplicates(emailsFullList);
$('#email-extracted').text(emailsFullList.join());
</script>

您的代码似乎正常工作,唯一的问题是您没有正确将文本添加到第二个文本区域:

演示:http://jsfiddle.net/nkLvwtLa/

$('#email-extractor').keyup(function (index) {
    var emails = extractEmails($(this).val());
    console.log(emails);
    if (!emails) {
        $('#email-extracted').text('** No emails in comment');
    } else if (emails.length < 3) {
        var text = '';
        for (var i = 0; i < emails.length; i++) {
            text += emails[i] + ',';
        }
        $('#email-extracted').text(text);
    } else {
        $('#email-extracted').text('** Ignoring comment, too many email addresses (' + emails.length + ').');
    }
});

试试这个...

function extractEmails (text)
{
    return text.match(/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+'.[a-zA-Z0-9._-]+)/gi);
}
function eliminateDuplicates (arr) {
    var i;
    var len=arr.length;
    var out=[];
    var obj={};
    for (i=0;i<len;i++) {
        obj[arr[i]]=0;
    }
    for (i in obj) {
        out.push(i);
    }
    return out;
}
var emailsFullList = [];
$('#email-extractor').keyup(function( index ) {
    var emails = extractEmails($(this).val());
    if (!emails) {
       $('#email-extracted').val('** No emails in comment');
    } else if (emails.length < 3) {
        emailsFullList = emailsFullList.concat(emails);
    } else {
        $('#email-extracted').val('** Ignoring comment, too many email addresses ('+emails.length+').');
    }
    
    emailsFullList = eliminateDuplicates(emailsFullList);
    $('#email-extracted').val(emailsFullList.join());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<textarea id="email-extractor" class="email-extractor-textarea"></textarea>
<textarea id="email-extracted" class="email-extractor-textarea"></textarea>

您需要移动这些行...

emailsFullList = eliminateDuplicates(emailsFullList);
$('#email-extracted').text(emailsFullList.join());

到您的.keyup()否则它们仅在页面加载时运行。此外,在使用textarea时,我认为您应该使用.val()而不是.text()来获取/设置值