Javascript无jquery-如何将此函数添加到由onload/onpaste触发的现有Javascript中?

Javascript无jquery-如何将此函数添加到由onload/onpaste触发的现有Javascript中?,javascript,validation,email,Javascript,Validation,Email,这是我先前回答的问题的补充 我曾尝试对这段精彩的代码实现一个验证函数,但没有成功 看来我需要更多的人手 这个脚本是我从@Martin Jespersen那里得到的非常好的答案的一个稍加修改的版本 该脚本获取电子邮件的单列列表,并将其拆分为包含不超过150个地址的单行逗号分隔列表的文本区域。很好 下面的工作很好,但我需要添加一个基本的验证函数 <html> <head> <script language=javascript type='text/javascrip

这是我先前回答的问题的补充

我曾尝试对这段精彩的代码实现一个验证函数,但没有成功

看来我需要更多的人手

这个脚本是我从@Martin Jespersen那里得到的非常好的答案的一个稍加修改的版本

该脚本获取电子邮件的单列列表,并将其拆分为包含不超过150个地址的单行逗号分隔列表的文本区域。很好

下面的工作很好,但我需要添加一个基本的验证函数

<html>
<head>
<script language=javascript type='text/javascript'>
function onpaste(e) {
var t = this;
var cnt='0';
setTimeout(function(){
var list = document.getElementById('t');
var emails= t.value.split(/\s+/), ta;
while(emails.length) {
cnt++;
ta = document.createElement('textarea');
ta.value = emails.splice(0,150).join(',').replace(/,\s*$/,'');
document.body.appendChild(ta);
}
document.getElementById('button1').value=cnt;
},1);
}
window.onload = function() {
document.getElementById('t').onpaste = onpaste;
}
</script>
</head>
<BODY>
<p><textarea id="t" rows="10" cols="50" class="textarea"></textarea><br /></p><br />
There are <input type="button" id="button1" value="0"> textareas
<pre id="p" class="pre"></pre>
</body>
</html>

函数onpaste(e){
var t=这个;
var cnt='0';
setTimeout(函数(){
var list=document.getElementById('t');
var=t.value.split(/\s+/),ta;
while(电子邮件长度){
cnt++;
ta=document.createElement('textarea');
ta.value=emails.splice(0150).连接(“,”).替换(/,\s*$/,”);
文件.正文.附件(ta);
}
document.getElementById('button1')。value=cnt;
},1);
}
window.onload=函数(){
document.getElementById('t').onpaste=onpaste;
}


这里有文本区
然而,我为之制作的那个家伙(实际上是@Martin制作的)对粘贴到文本区域的内容并不十分仔细

因此,我正在尝试实现一个功能,以减少无效电子邮件/错误输入

我尝试了几种方法,包括将onload事件更改为带有onclick事件的页面中的按钮

我以为我是在这里学习,但我就是无法思考我做错了什么

那么,我如何将这个函数,或者只是它的“验证”例程插入到上述函数中呢

function findEmailAddresses(StrObj) {
var separateEmailsBy = '\n';
var email = "<none>"; // if no match, use this
var emailsArray = StrObj.match(/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)/gi); // yeah could be better 
if (emailsArray) {
email = "";
for (var i = 0; i < emailsArray.length; i++) {
if (i != 0) email += separateEmailsBy;
email += emailsArray[i];
      }
   }
return email;
}
函数findemailaddress(StrObj){
var separateEmailsBy='\n';
var email=”“;//如果不匹配,请使用此
var emailsArray=StrObj.match(/([a-zA-Z0-9.\u-]+@[a-zA-Z0-9.\u-]+\.[a-zA-Z0-9.\u-]+)/gi);//是的,可能更好
如果(emailsArray){
电子邮件=”;
对于(var i=0;i
FindMailAddresses函数的使用:

<textarea name=t rows=10 cols=50 onBlur="this.form.email.value=findEmailAddresses(this.value);"></textarea>

我尝试在上面的函数中单独调用该函数,甚至尝试在两种情况下都使用“email”而不是“this.value”插入代码来删除该函数。我甚至尝试了两页的方法。由于某些原因,我无法将此代码实现到正在工作的拆分器中。我的结果要么无效,要么我破坏了它

基本上,我尝试了许多不同的插入方式。如下图所示:

    <html>
<head>
<script language=javascript type='text/javascript'>
function onpaste(e) {
var t = this;
var cnt='0';
setTimeout(function(){
var list = document.getElementById('t');
var emails= t.value.split(/\s+/), ta;
//
findEmailAddresses(emails);
// also tried inserting code from function. ///
while(emails.length) {
cnt++;
ta = document.createElement('textarea');
ta.value = emails.splice(0,150).join(',').replace(/,\s*$/,'');
document.body.appendChild(ta);
}
document.getElementById('button1').value=cnt;
},1);
}
window.onload = function() {
// tried to trigger it here as well and even added a new split //
document.getElementById('t').onpaste = onpaste;
}
/////
 function findEmailAddresses(StrObj) {
    var separateEmailsBy = '\n';
    var email = "<none>"; // if no match, use this
    var emailsArray = StrObj.match(/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)/gi); // yeah could be better 
    if (emailsArray) {
    email = "";
    for (var i = 0; i < emailsArray.length; i++) {
    if (i != 0) email += separateEmailsBy;
    email += emailsArray[i];
          }
       }
    return email;
    }
////////
</script>
</head>
<BODY>
<p><textarea id="t" rows="10" cols="50" class="textarea"></textarea><br /></p><br />
There are <input type="button" id="button1" value="0"> textareas
<pre id="p" class="pre"></pre>
</body>
</html>

函数onpaste(e){
var t=这个;
var cnt='0';
setTimeout(函数(){
var list=document.getElementById('t');
var=t.value.split(/\s+/),ta;
//
FindeMailAddress(电子邮件);
//还尝试从函数中插入代码///
while(电子邮件长度){
cnt++;
ta=document.createElement('textarea');
ta.value=emails.splice(0150).连接(“,”).替换(/,\s*$/,”);
文件.正文.附件(ta);
}
document.getElementById('button1')。value=cnt;
},1);
}
window.onload=函数(){
//试图在这里触发它,甚至增加了一个新的分裂//
document.getElementById('t').onpaste=onpaste;
}
/////
函数findemailaddress(StrObj){
var separateEmailsBy='\n';
var email=”“;//如果不匹配,请使用此
var emailsArray=StrObj.match(/([a-zA-Z0-9.\u-]+@[a-zA-Z0-9.\u-]+\.[a-zA-Z0-9.\u-]+)/gi);//是的,可能更好
如果(emailsArray){
电子邮件=”;
对于(var i=0;i


这里有文本区

非常感谢任何能提供帮助的人。

尝试实现返回;在您的内联javascript之后。

这没有任何作用。粘贴时没有输出。有效与否。我还尝试将FindeMailAddress(电子邮件)更改为FindeMailAddress(“电子邮件”)。看来我只是在追我的尾巴。5天,但仍然无法解决这个问题。这只老狗似乎没有学会任何新把戏。