这是我之前回答的问题的附加内容。
我试图对这个精彩的代码实现验证功能无济于事。
看起来我需要更多的握手。
这个脚本是我从@Martin Jespersen收到的非常出色的答案的略微修改版本。
该脚本采用单列电子邮件列表并将其分解为textareas,其中包含不超过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中的内容并不是非常细致。
所以,我正在尝试实现一个可以减少无效电子邮件/错误输入的功能。
我尝试了几种方法,包括使用onclick事件将onload事件更改为页面中的按钮。
我以为我在这里学习但是,我无法将自己的大脑包裹在我做错的事情中。
那么,如何将此函数或其“验证”例程插入上述函数之一?
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>
非常感谢能够提供帮助的任何人。
答案 0 :(得分:0)
尝试将return返回true;在你的内联javascript之后。