Перебор опцй(checkbox) и отправка почты

 
0
 
JavaScript
ava
guest | 05.11.2004, 18:48
Всем приветики.
Я программист на Perl, а тут судьба, а именно одно из первых заданий на работе, столкнуло с Явой.
Передо мной стоит следующее задание.
Нужно чтобы было так.

Имеем текстовый фаил с почтовыми адресами. Но грузить вас не буду.
Смысл такой, когда все из перла выводится в чистый HTML, то получается HTML фаил, содержащий:

<input type=checkbox name=id1 [email protected]> 1. email адрес номер один /*value у формы равно: [email protected] */
<input type=checkbox name=id2 [email protected] > 2. email адрес номер два /*value у формы равно: [email protected] */
<input type=checkbox name=id3 [email protected] > 3. email адрес номер три /*value у формы равно: [email protected] */

<input type=checkbox value=all> Отправить всем
И кнопка сабмит ессно.

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

Смысл такой, ему нужно отправить письмо адрессату номер один, он ставит галочку напротив первого адреса, нажимает отправить, и выскакиевает аутлук с введеным в поле кому (ну стандартный mailto:... ) адресом.
Однако если он поставил 2 галочки, то выскочит "создать сообщение" и введено 2 адреса.
Еще если поставить галочку "все", то выделится все три и выполнятся соответствующие действия.
Так вот, не могли бы вы мне помочь, либо исходником каким, либо наваять тут скриптик этот. Просто очень нужно все это в ближайшие 2-3 дня.
Умоляю помогите. В долгу не останусь - будет надобность помогу с Perl'ом.
Заранее благодарен. С нетерпением жду ответа.
Kommentare (9)
ava
Fearless | 06.11.2004, 21:20 #
я думаю это то что надо ....... протестил в mozilla + почта мозиловская , IE + (отглюк 2003 и Express ) , Konqueror + Kmail (в этом варианте мне больше всех понравилось всётаки грамотно работает Kmail в очередной раз в этом убедился а грамотность заключается в отсутствие надписи mailto: которая везде присутствовала до некоторых изменений в скрипт )



<html>
<body>
<script language="javascript">
function check_all(param) {
for (i=1; i < 4; i++){
document.getElementById("id"+i).checked=param;
}
}

function string_mail() {
s=""
for (i=1; i < 4; i++){
if (document.getElementById("id"+i).checked){
s = document.getElementById("id"+i).value + "; " + s;
}
}
return document.getElementById("send").href="mailto: " + s;
}

</script>

<input type="checkbox" name="e1" id="id1" value="[email protected]" > 1. email адрес номер один<br>
<input type="checkbox" name="e2" id="id2" value="[email protected]" > 2. email адрес номер два <br>
<input type="checkbox" name="e3" id="id3" value="[email protected]" > 3. email адрес номер три <br><br>


<input type="checkbox" onclick="check_all(this.checked);"> Отправить всем <br><br>
<a id="send" href="" onclick="string_mail();"> ОТПРАВИТЬ </a>
</body>
</html>
ava
guest | 06.11.2004, 22:25 #
Друг, ОГРОМНОЕ тебе СПАСИБО!
Я говорил, что в долгу не останусь и обязательно отблагодарю.
У меня к тебе еще тогда вопросик, если тебе не сложно, конечно.
Я так понял параметр name в форме в этом скрипте не участвует. Так вот, получается данная форма только для 3-х емаил адресов, а преположим, что адреса динамически изменяются, можно ли тут чем помочь? Ну не сами адреса точнее, а их количество.

Допустим, у нас эти 3 адреса уже есть, а я добавляю в базу еще один, четвертый. Как мне сразу изменить в скрипте в функции цифру "4" на "5", и т.д. если я потом буду еще адреса добавлять?
И нет ли скрипта, а точнее маленькой джава строчки, чтобы было следующее
грузится лист телефонов сотрудников отдела (ессно он может уменьшаться и увеличиваься), и чтобы было что-то следующее:
<.... id="id1" ...>
<.... id="id2" ...>
. . . . . . . . . . . . . . .
<.... id="javascript.inter()" ...>
. . . . . . . . . . . . . . .
<.... id="id8" ...>
Ну чтобы эта функция сама присваивала id'шкам значения. То есть если их 6 штук, то она с первой по 6-ю проставляет id=1 ... id=6, если 9 штук, то id=1 .... id=9 автоматом выставлено?
Если есть такая возможность, скажи плиз.... Буду очень благодарен.

А, быть может, можно как-то вообще отбирать не опираясь на имя формы (form name) и id (form id)?
То есть - стоит флажок, считывать value формы, не стоит, не трогать?
Если нереально, то когда как удобнее всего?

Брат, помоги пожалуйста, слезно прошу. Я в дурной ситуации....
ava
sergejzr | 06.11.2004, 22:31 #
Модератор:
Андрей СС , от всей души приглашаю Вас зарегестрироваться на нашем форуме smile
У вас появятся новые возможности. Например вы сможете отблагодарить многоув. Fearless повышением репутации smile
Как перл-программист, Вы также возможно сможете помогать нуждающимся :)

Уверен, Вам понравится у нас :)

ava
Sardar | 06.11.2004, 23:02 #
Добавим немного универсальности:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
<script language="javascript" type="text/javascript">
function check_all(v) {
var inp=document.getElementById("mailcont").getElementsByTagName("INPUT");
for (var i=0; i<inp.length; i++) inp[i].checked=v;
}
function string_mail(a) {
var inp=document.getElementById("mailcont").getElementsByTagName("INPUT");
var s="";
for (var i=0; i<inp.length; i++) {
if (inp[i].value && inp[i].checked) s+=inp[i].value+"; ";
}
a.href="mailto: "+s;
return true;
}

</script>
<div id="mailcont">
<input type="checkbox" value="[email protected]" > 1. email адрес номер один<br>
<input type="checkbox" value="[email protected]" > 2. email адрес номер два <br>
<input type="checkbox" value="[email protected]" > 3. email адрес номер три <br>
</div>
<br><input type="checkbox" onclick="check_all(this.checked);"> Отправить всем <br><br>
<a href="" onclick="string_mail(this);"> ОТПРАВИТЬ </a>
</body>
</html>


В контейнер mailcont генерим скольугодно чекбоксов.

А вообще это не правильно, отправкой почты должен заниматся сервер а не почтовик клиента. Напрягает и заставляет думать о не серьезности конторы. ;-)
ava
Андрей СС | 06.11.2004, 23:07 #
Sardar
Спасибо большое! сейчас обработаю в голове!
sergej.z
Сказано - сделано ;)
ava
Андрей СС | 09.11.2004, 14:23 #
Sardar
Еще раз спасибки большое, сейчас на работе все запустил - работает иделально.

Возникла последняя проблема /*доканаля я вас (( */, у меня в списке чекбоксов, есть чекбоксы, которые являются заголовками подблоков, а при отправке почты, их значение валуе считывается как "no" я так понял... И в общем письмо на no тоже собирается отправляться...
а разграничивать разделы - <div...> ... </div> потом снова <div...> ... </div> - тяжеловато. я вот пробую чтобы если адрес почты no, чтобы он тогда не добавлял в строку рассылки. Но чего-то пока около 6-8 разных вещей, которых я придумал чтобы обойти эту проблему - не помогают (((
ava
Sardar | 09.11.2004, 14:34 #
Добавим к чекбоксам аттрибут take_as_email(назови как хочешь:) )
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
<script language="javascript" type="text/javascript">
function check_all(v) {
var inp=document.getElementById("mailcont").getElementsByTagName("INPUT");
for (var i=0; i<inp.length; i++)
if(inp[i].type=="checkbox" && inp[i].getAttribute("take_as_email")) inp[i].checked=v;
}
function string_mail(a) {
var inp=document.getElementById("mailcont").getElementsByTagName("INPUT");
var s="";
for (var i=0; i<inp.length; i++) {
if (inp[i].type=="checkbox" && inp[i].getAttribute("take_as_email") && inp[i].checked)
s+=inp[i].value+"; ";
}
a.href="mailto: "+s;
return true;
}

</script>
<div id="mailcont">
<input type="checkbox" value="[email protected]" take_as_email="true"> 1. email адрес номер один<br>
<input type="checkbox" value="[email protected]" take_as_email="true"> 2. email адрес номер два <br>
<input type="checkbox" value="[email protected]" take_as_email="true"> 3. email адрес номер три <br>
<input type="checkbox"> Меня брать не надо! <br>
</div>
<br><input type="checkbox" onclick="check_all(this.checked);"> Отправить всем <br><br>
<a href="" onclick="string_mail(this);"> ОТПРАВИТЬ </a>
</body>
</html>


Все кто не имеют этот атрибут - не участвуют в переборе.
ava
Андрей СС | 09.11.2004, 14:44 #
Оки теперь точно пасибки!
Я к тому же пока сидел - напсиал чтобы он if ... != "no"
Но твой метод ессно правильный
так что буду иметь ввиду - спасибо!!!!
Огромное спасибо!
Я теперь буду завсегдаем форума. Мне тут понравилось. Оперативнось на высоте!
Еще раз спасибо. Если еще раз будут на работе грызть - напишу.
ava
Sardar | 09.11.2004, 15:33 #
Да всегда рады тебя видеть, не только здесь, во флейме можно расслабиться smile
Registrieren Sie sich oder melden Sie sich an, um schreiben zu können.
Unternehmen des Tages
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Mitwirkende
advanced
Absenden