Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Вывод значение checkbox-a в окне confirm


Автор: iDrum 5.5.2006, 12:09
Форма с различными импутами text и checkbox.При нажатие на сабмит нужно вывести данные чекбоксов отмеченого галочкой,всё остальное выводиться нормально.
форма
Код

<FORM action="./index.php?action=send" method='post' enctype="multipart/form-data">
<INPUT type="hidden" name="action" value="send">
<br>Контактное лицо(Ф.И.О):<br>
<INPUT name=fio class=input style="WIDTH:300;height:20 " value="<?echo $fio?>" ><br>
Название компании:<br>
<INPUT name=company class=input style="WIDTH: 300;height:20" value="<?echo $company?>"><br>
Адрес (индекс, страна, область, город):<br>
<INPUT name=addres class=input style="WIDTH: 300;height:20" value="<?echo $addres?>"><br>
E-mail:<br>
<INPUT name=e_mail class=input style="WIDTH: 300;height:20" value="<?echo $e_mail?>"><br>
Контактный телефон (с кодом),факс:<br>
<INPUT name=tel class=input style="WIDTH: 300;height:20" value="<?echo $tel?>"><br>
Выберите категории:
<input type='checkbox' name='cat[0]' value='Катеогрия 1'>
<input type='checkbox' name='cat[1]' value='Катеогрия 2'>
<input type='checkbox' name='cat[2]' value='Катеогрия 3'>
<input type="submit" Onclick='return valid(this.form)' class='button' value="Отправить" >
</FORM>



проверяю только фио на ввод
Код
function valid(form) {
if (form.fio.value == ""){ alert("Укажите данные"); return false}
else {
if (confirm("Проверьте ваши данные:\nФИО: "+form.fio.value+"\nНазвание компании: "+form.company.value+"\nАдрес: "+form.addres.value+"\nE-mail: "+form.e_mail.value+"\nТелефон: "+form.tel.value+"\nФорма заполнена корректно?")) return true
else return false;
}
}

  

Автор: 12345c 5.5.2006, 12:45
 enctype="multipart/form-data" здесь лишнее.

Чтобы чекбоксы читать как массив, надо писать

Код
<input type='checkbox' name='cat[]' value='Катеогрия 1'>
<input type='checkbox' name='cat[]' ...
В остальном проблемы не вижу.

 

Автор: iDrum 5.5.2006, 13:49
да,вы правы,исправил.Но не могу воткнуть вывод в confirm проверку на наличие галки и вставку по true. 

Автор: igorold 5.5.2006, 14:26
Может что-то типа этого?
Код

function valid(form) {
if (form.fio.value == ""){ alert("Укажите данные"); return false}
else {
if (form.cat[0].checked==false && form.cat[1].checked==false && form.cat[2].checked==false )
{
    if (confirm('Выберите Категорию 1?'))
    {
        form.cat[0].checked=true;
    }
    else if (confirm('Выберите Категорию 2?'))
    {
        form.cat[1].checked=true;
    }
    else
    {
        form.cat[2].checked=true;
    }
}
if (confirm("Проверьте ваши данные:\nФИО: "+form.fio.value+"\nНазвание компании: "+form.company.value+"\nАдрес: "+form.addres.value+"\nE-mail: "+form.e_mail.value+"\nТелефон: "+form.tel.value+"\nФорма заполнена корректно?")) return true
else return false;
}
}
  

Автор: 12345c 5.5.2006, 14:56
iDrum: Есть такая тема http://forum.vingrad.ru/index.php?showtopic=86395. По её типу:

Код
<form action="" name=fo1 (this.value+' форму?');">
...
<input name=fio value="Фамилия_И_О">
<input type=submit>
...
</form>
или ссылаемся на функцию, где проходят проверки полей, которая возвращает true, если всё правильно. (onsubmit="return ff()")
 

Автор: iDrum 6.5.2006, 05:33
12345c, по ссылке - мне не нада ничего удалять,то бишь онулять форму.Мне просто нада в окне конфирма помимо вывода ФИО адреса и тд вывести список категорий,которые были отмечены.
igorold, не работает.Думаю нада сделать по циклу прогнать каждый чекбокс и проверить на checked,если true то записать в переменную.А потом эту переменную вывести в окне конфирма.Но оказываеться плохо знаю синтаксис блин 

Автор: igorold 6.5.2006, 06:41
Вот так у меня работает:
Код

<input type='checkbox' name='cat' value='Категория 1'>Категория 1
<input type='checkbox' name='cat' value='Категория 2'>Категория 2
<input type='checkbox' name='cat' value='Категория 3'>Категория 3

тогда функцию переписываем:
Код

function valid(form) {
if (form.fio.value == ""){ alert("Укажите данные"); return false}
else {
if (form.cat[0].checked==false && form.cat[1].checked==false && form.cat[2].checked==false )
{
    if (confirm( 'Выберите '+form.cat[0].value+'?'))
    {
        form.cat[0].checked=true;
    }
    else if ( 'Выберите '+form.cat[1].value+'?'))
    {
        form.cat[1].checked=true;
    }
    else
    {
        form.cat[2].checked=true;
    }
}
var cat = '';
for (var i = 0; i < 3; i++) { if (form.cat[i].checked==true)  cat = form.cat[i].value; }
if (confirm("Проверьте ваши данные:\nФИО: "+form.fio.value+"\nНазвание компании: "+form.company.value+"\nАдрес: "+form.addres.value+"\nE-mail: "+form.e_mail.value+"\nТелефон: "+form.tel.value+"\nКатегория:"+cat+"\nФорма заполнена корректно?")) return true
else return false;
}
}


Добавлено @ 06:51 
Это я написал пример, если не выбрано ни одного чекбокса, то выбирается последний .... 
не рассматривал случай, если будет выбрано более одного чекбокса или не должно быть не выбрано ни одного ... 
думаю это не трудно самому сделать ...  

Автор: iDrum 6.5.2006, 07:34
извиняюсь,просто полсушал 12345c,оказывается нада вообще без [].
Вообщем сделал так:
Код

function valid(form) {
if (form.fio.value == ""){ alert("Укажите данные"); return false }
cvar="";
for(i=0;i<4;i++) {
if(form.cat[i].checked==true) 
cvar="\n"+cvar+form.cat[i].value+"\n";
  }
if (confirm("Проверьте ваши данные:\nФИО: "+form.fio.value+"\nНазвание компании: "+form.company.value+"\nАдрес: "+form.addres.value+"\nE-mail: "+form.e_mail.value+"\nТелефон: "+form.tel.value+"\nВыбранные категории: "+cvar+"\nФорма заполнена корректно?")) return true
else return false;
}
 

Автор: igorold 6.5.2006, 07:41
лучше , наверное сделать так:
Код

cvar=cvar+form.cat[i].value+"\n";

и если у тебя 3 чекбокса, то цикл делай до i<3 

Автор: iDrum 6.5.2006, 08:08
а ещё лучше было бы определить размер массива.Это можно сделать? 

Автор: igorold 6.5.2006, 09:04
да, размер массива в данном случае равен:
Код

for(i=0;i<form.cat.length;i++)
  

Автор: iDrum 6.5.2006, 09:20
большое спасибо.
 

Автор: iDrum 6.5.2006, 10:15
интересно ,а почему не работает с cat[] ? дело в том что мне в пхп нада бы этот массив обработать потом 

Автор: iDrum 6.5.2006, 13:45
оффтопа малость: 
<input type="checkbox" name="cat1" value="cat1" >
<input type="checkbox" name="cat2" value="cat2">

for(i=1;i<2;i++) {
         if(form.cat???.checked==true) { 
    }

что написать вместо ??? что бы по циклу обработать оба инпута?  

Автор: igorold 6.5.2006, 15:12
может так:
Код

for(i=1;i<2;i++) {
         if( eval("form.cat"+ i+".checked")  ==true) { 
}
 

Автор: 12345c 6.5.2006, 15:28
iDrum, с cat[] надо в JS обращаться
Код
document.getElementsByName('cat[]')[i]
 

Автор: iDrum 8.5.2006, 09:37
Цитата(12345c @ 6.5.2006,  15:28)
iDrum, с cat[] надо в JS обращаться
Код
document.getElementsByName('cat[]')[i]

спасибо.Правда работаети под ие но не работает под файрфокс 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)