Перебор опцй(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'ом.
Заранее благодарен. С нетерпением жду ответа.
Comments (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
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
advanced
Submit