Если я не заполняю все первое письмо (из 3), действие не выполняется - PullRequest
3 голосов
/ 18 ноября 2011

У меня есть этот скрипт для автоматической отправки информации о загрузке по электронной почте:

if(confirm('', 'Are you sure?') == true) {

// enviar mails
var emails = new Array();
if (getFormFieldValue('4469') != '') {
    emails[0] = getFormFieldValue('4469');
}
if (getFormFieldValue('4470') != '') {
    emails[1] = getFormFieldValue('4470');
}
if (getFormFieldValue('4471') != '') {
    emails[2] = getFormFieldValue('4471');
}

var msgBody =   'blablabla' ; 

var s = new SendMessage();

if(emails.length > 0) {
s.sendEmailMessage(emails, msgBody);
}


confirmForm();
}

Как видите, есть 3 письма, если я не заполняю первое, ничего не произойдет, если язаполнить только второе или жаждущее письмо тоже ничего.Единственный способ выполнить этот скрипт - заполнить первое письмо.

Как я могу это исправить?

Спасибо

Ответы [ 2 ]

2 голосов
/ 18 ноября 2011

Попробуйте использовать переменную индекса массива, чтобы отслеживать, какую запись в массиве электронной почты вы заполняете. Вы хотите всегда начинать с индекса 0, затем 1 и т. Д. Независимо от того, какие электронные письма заполнены:

var emails == new Array();
var emailIndex = 0;
if (getFormFieldValue('4469') != '') {
    emails[emailIndex ++] = getFormFieldValue('4469');
}
if (getFormFieldValue('4470') != '') {
    emails[emailIndex ++] = getFormFieldValue('4470');
}
if (getFormFieldValue('4471') != '') {
    emails[emailIndex ++] = getFormFieldValue('4471');
}
// emails should be populated now starting from index 0

Если значения полей формы всегда увеличиваются с 4469-4471, вы также можете упростить и сократить код с помощью цикла for:

var emails = new Array();
var emailIndex = 0;
for (var fld = 4469; fld <= 4471; fld++)
    if (getFormFieldValue(fld.toString()) != '')
        emails[emailsIndex++] = getFormFieldValue(fld.toString());

РЕДАКТИРОВАТЬ : Как отмечает @Naren, это можно сделать еще проще, используя Array.push:

var emails = new Array();
for (var fld = 4469; fld <= 4471; fld++)
    if (getFormFieldValue(fld.toString()) != '')
        emails.push(getFormFieldValue(fld.toString()));
0 голосов
/ 18 ноября 2011

Просто используйте Array.push (), вот так:

var x = getFormFieldValue(y);
if (x != '') emails.push(x);

Это может быть легко использовано итеративно: например, вы можете создать массив со значениями полей для чтения и циклического перебора по нему.

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