【问题标题】:Javascript no jquery - How do I add this function to existing javascript that is triggered by onload / onpaste?Javascript no jquery - 如何将此函数添加到由 onload / onpaste 触发的现有 javascript?
【发布时间】:2011-12-08 15:35:54
【问题描述】:

这是对我之前回答的问题的补充。

question 8423472

我曾尝试对这段精彩的代码实现验证功能,但无济于事。

看来我需要更多的手。

此脚本是我从@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>

但是,我为它制作的那个人(实际上是@Martin 制作的)对他粘贴到 textarea 中的内容并不十分细致。

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

我尝试了几种方法,包括将 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;
}

findEmailAddresses 函数的使用:

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

我尝试在上述函数中单独调用该函数,甚至尝试在这两种情况下删除仅使用“电子邮件”而不是“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>

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

【问题讨论】:

    标签: javascript validation email


    【解决方案1】:

    试着把 return true;在你的内联 javascript 之后。

    【讨论】:

    • 什么也没做。粘贴时没有输出。有效与否。
    • 我还尝试将 findEmailAddresses(emails) 更改为 findEmailAddresses('emails') 。看起来我只是在这里追逐我的尾巴。 5天,仍然无法解决这个问题。这只老狗似乎没有学习任何新技巧。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    • 1970-01-01
    • 1970-01-01
    • 2021-09-16
    • 1970-01-01
    • 2016-05-26
    • 2013-09-26
    相关资源
    最近更新 更多