2011-12-08 3 views
0

Ceci est un add-on à ma question précédemment répondu.Javascript no jquery - Comment ajouter cette fonction au javascript existant qui est déclenché par onload/onpaste?

question 8423472

J'ai essayé de mettre en œuvre une fonction de validation à ce code merveilleux en vain.

On dirait que j'ai besoin de plus de mains ici.

Ce script est une version légèrement modifiée de la très bonne réponse que j'ai reçue de @Martin Jespersen.

Le script prend une liste de courriels à une seule colonne et la divise en zones de texte contenant des listes séparées par des virgules à une rangée et ne contenant pas plus de 150 adresses. Agréable. Ci-dessous fonctionne très bien mais, j'ai besoin d'ajouter une fonction de validation de base.

<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> 

CEPENDANT, le gars je l'ai fait pour (en fait fait @ Martin) n'est pas réel méticuleux au sujet de ce qu'il colle dans la zone de texte. Donc, j'essaye d'implémenter une fonction qui réduira les email invalides/mauvaises entrées.

J'ai essayé plusieurs méthodes, y compris la modification de l'événement onload à un bouton de la page avec un événement onclick.

Je pensais que j'apprenais ici, mais je ne peux tout simplement pas comprendre ce que je fais de mal. Alors, comment puis-je insérer cette fonction, ou juste sa routine de "validation" dans l'une des fonctions ci-dessus?

function findEmailAddresses(StrObj) { 
var separateEmailsBy = '\n'; 
var email = "<none>"; // if no match, use this 
var emailsArray = StrObj.match(/([a-zA-Z0-9._-][email protected][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; 
} 

useage de fonction findEmailAddresses:

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

J'ai essayé d'appeler la fonction individuellement dans les fonctions ci-dessus et même essayé de supprimer la fonction simplement insérer le code à l'aide « e-mails » au lieu de « this.value » dans les deux cas. J'ai même essayé une approche de deux pages. Pour une raison quelconque, je ne peux pas implémenter ce code dans le séparateur de travail. Mes résultats sont soit sans effet ou je casse la chose.

Fondamentalement j'ai essayé beaucoup de variations d'insertion. Comme ci-dessous:

<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._-][email protected][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> 

Merci à tous ceux qui peuvent aider.

Répondre

0

Essayez de mettre la valeur true; après votre javascript en ligne.

+0

Cela n'a rien fait. Il n'y a pas de sortie sur pâte. Valide ou non. –

+0

J'ai aussi essayé de changer les findEmailAddresses (emails) pour trouverEmailAddresses ('emails'). On dirait que je ne fais que courir après ma queue ici. 5 jours et ne peut toujours pas comprendre cela. Ce vieux chien n'apprend apparemment pas de nouvelles astuces. –

Questions connexes