Javascript no jquery - Как добавить эту функцию в существующий javascript, который запускается onload / onpaste? - PullRequest
0 голосов
/ 08 декабря 2011

Это дополнение к моему ранее отвеченному вопросу.

вопрос 8423472

Я пытался реализовать функцию проверки этого замечательного кода, но безрезультатно.

Похоже, мне нужно больше держать руку здесь.

Этот сценарий является слегка измененной версией довольно превосходного ответа, который я получил от @Martin Jespersen.

Сценарийодин столбец списка электронных писем и разбитый на текстовые области, содержащие в одну строку списки, разделенные запятыми, не более 150 адресов.Хорошо.

Ниже работает отлично, но мне нужно добавить базовую функцию проверки.

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

ОДНАКО, парень, которого я сделал этоибо (на самом деле @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;
}

Использование функции findEmailAddresses:

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

Я попытался вызвать функцию индивидуально в функциях выше и даже попытался удалить функцию, просто вставляя код, используя «электронные письма» вместо «this.value» в обоих случаях.Я даже попробовал двухстраничный подход.По какой-то причине я просто не могу внедрить этот код в работающий сплиттер.Мои результаты либо не действуют, либо я ломаю вещь.

В основном я пробовал много вариантов вставки.Как показано ниже:

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

Большое спасибо всем, кто может помочь.

1 Ответ

0 голосов
/ 13 декабря 2011

Попробуйте выставить return true;после вашего встроенного JavaScript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...