Автор Тема: проверка полей  (Прочитано 10186 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Greg

  • пинёг
  • Ветеран
  • *****
  • Сообщений: 618
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.bsfera.ru
проверка полей
« : 21 Августа 2006, 13:22:41 »
суть задачи такова:
у меня есть форма в которой существует неизвестное(!) количество элементов checkbox. мне требуется проверить их заполненность ("отмеченность") и в результате выволнить два действия:
1) если ничего не заполнено, вывести предупреждение и прекратить дальнейшее выполнение функции
2) если отмечены все поля, выполнить стандартную функцию print().

проблем не было бы, если бы я точно знал сколько и какие элементы есть в форме.

может кто чем подскажет?
Пространные размышления об ИТ и все что вокруг

Оффлайн html_coder

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 427
  • +0/-0
  • 0
    • Просмотр профиля
проверка полей
« Ответ #1 : 21 Августа 2006, 14:05:03 »
Greg

а что мешает просто получить все checkboxes, и проверить их в цикле, как только нашёл первый не отмеченный сделать return из функции...

Оффлайн avb

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 22
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
проверка полей
« Ответ #2 : 21 Августа 2006, 14:11:43 »
Все элементы формы:
document.forms[индекс или "имя формы"].elements
Из них чекбоксами являются те, для которых:
document.forms[индекс или "имя формы"].elements.type=="checkbox"
Если чекбокс отмечен, то:
document.forms[индекс или "имя формы"].elements.checked==true
в противном случае:
document.forms[индекс или "имя формы"].elements.checked==false

Если есть возможность задавать всем чекбоксам одно имя (аттрибут name), то тогда они будут в массиве:
document.forms[индекс или "имя формы"].elements["имя чекбоксов"]

Оффлайн Greg

  • пинёг
  • Ветеран
  • *****
  • Сообщений: 618
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.bsfera.ru
проверка полей
« Ответ #3 : 21 Августа 2006, 14:22:28 »
html_coder
avb
я в javascript почти не работаю, поэтому многих функций не помню или просто не знаю.
вот значит так делаем (для проверки все ли чекбоксы отмечены) :
1) в цикле проверяем свойство элемента формы, если чекбокс, то...
1.1) проверяем отмечен/неотмечен он. если отмечен, прибавляем единичку в какуюто переменную

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

вот в чем вопрос, как узнать количество элементов, т.е. чекбоксов?
Пространные размышления об ИТ и все что вокруг

Оффлайн hanslinger

  • H2Oer
  • Ветеран
  • *****
  • Сообщений: 1148
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.orava.ru
проверка полей
« Ответ #4 : 21 Августа 2006, 14:26:17 »
var xxx = element.getElementsByTagName(\'input\');
if (xxx.type == \'checkbox\') ...
Я здесь обычно такие вещи смотрю.

Оффлайн html_coder

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 427
  • +0/-0
  • 0
    • Просмотр профиля
проверка полей
« Ответ #5 : 21 Августа 2006, 14:39:00 »
Greg ну практически всё объяснили, если не понятно, напиши, я тебе тогда разложу по полочкам!

Оффлайн Greg

  • пинёг
  • Ветеран
  • *****
  • Сообщений: 618
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.bsfera.ru
проверка полей
« Ответ #6 : 21 Августа 2006, 14:39:07 »
вот сделал так, но что-то не фурычит:

<script language="javascript">
function 
CheckIt ()
{
	
var 
Check=0;
	
//проверяем, есть ли заполненные
	
for (var 
i=0i<document.form_list.lengthi++)
	
	
{
	
	
if (
document.form_list.elements[i].type=="checkbox")
	
	
	
{
	
	
	
if (
document.form_list.elements[i].checked==true)
	
	
	
	
{
Check++}
	
	
	
}
	
	
}
	
alert (Check);
	
return 
false
}
</script>


на страничке такая кнопочка
<input type="submit" value="печатать выбранное" onclick="CheckIt(); return false" />
По нажатию кнопки выполняется скрипт, но нужно чтобы сначала проверил.что здесь не так?
Пространные размышления об ИТ и все что вокруг

Оффлайн avb

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 22
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
проверка полей
« Ответ #7 : 21 Августа 2006, 14:46:21 »
var checkboxes=0; //кол-во чекбоксов
var checked=0; //кол-во отмеченных чекбоксов

for(i=0; i  if (document.forms[0].elements.type== \'checkbox\'){
    checkboxes ++ ;
    if(document.forms[0].elements.checked) {checked ++;}
  }
}

Оффлайн avb

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 22
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
проверка полей
« Ответ #8 : 21 Августа 2006, 14:49:24 »
for (var i=0; i
for (var i=0; i

Оффлайн html_coder

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 427
  • +0/-0
  • 0
    • Просмотр профиля
проверка полей
« Ответ #9 : 21 Августа 2006, 15:05:03 »
Да и лучше проверять по событию onSubmit="return CheckIt();"

Оффлайн Greg

  • пинёг
  • Ветеран
  • *****
  • Сообщений: 618
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.bsfera.ru
проверка полей
« Ответ #10 : 21 Августа 2006, 15:35:14 »
всем огромное спасибо за помощь!
Пространные размышления об ИТ и все что вокруг

Оффлайн Greg

  • пинёг
  • Ветеран
  • *****
  • Сообщений: 618
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.bsfera.ru
проверка полей
« Ответ #11 : 28 Августа 2006, 15:08:42 »
появился еще один вопрос: есть тэг