Программирование => JavaScript & JScript => Тема начата: Greg от 21 Августа 2006, 13:22:41
Название: проверка полей
Отправлено: Greg от 21 Августа 2006, 13:22:41
суть задачи такова: у меня есть форма в которой существует неизвестное(!) количество элементов checkbox. мне требуется проверить их заполненность ("отмеченность") и в результате выволнить два действия: 1) если ничего не заполнено, вывести предупреждение и прекратить дальнейшее выполнение функции 2) если отмечены все поля, выполнить стандартную функцию print().
проблем не было бы, если бы я точно знал сколько и какие элементы есть в форме.
может кто чем подскажет?
Название: проверка полей
Отправлено: html_coder от 21 Августа 2006, 14:05:03
Greg
а что мешает просто получить все checkboxes, и проверить их в цикле, как только нашёл первый не отмеченный сделать return из функции...
Название: проверка полей
Отправлено: avb от 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 от 21 Августа 2006, 14:22:28
html_coder avb я в javascript почти не работаю, поэтому многих функций не помню или просто не знаю. вот значит так делаем (для проверки все ли чекбоксы отмечены) : 1) в цикле проверяем свойство элемента формы, если чекбокс, то... 1.1) проверяем отмечен/неотмечен он. если отмечен, прибавляем единичку в какуюто переменную
потом эту переменную сравниваем с количеством чекбоксов в форме, если равно, то выполняем оду функцию, если не равно, но не 0, то другую, а если 0, то предупреждаем и выходим.
вот в чем вопрос, как узнать количество элементов, т.е. чекбоксов?
Название: проверка полей
Отправлено: hanslinger от 21 Августа 2006, 14:26:17
var xxx = element.getElementsByTagName(\'input\'); if (xxx.type == \'checkbox\') ... Я здесь (http://developer.mozilla.org/en/docs/Gecko_DOM_Reference) обычно такие вещи смотрю.
Название: проверка полей
Отправлено: html_coder от 21 Августа 2006, 14:39:00
Greg ну практически всё объяснили, если не понятно, напиши, я тебе тогда разложу по полочкам!
Название: проверка полей
Отправлено: Greg от 21 Августа 2006, 14:39:07
вот сделал так, но что-то не фурычит:
на страничке такая кнопочка
По нажатию кнопки выполняется скрипт, но нужно чтобы сначала проверил.что здесь не так?
Название: проверка полей
Отправлено: avb от 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 от 21 Августа 2006, 14:49:24
for (var i=0; i for (var i=0; i
Название: проверка полей
Отправлено: html_coder от 21 Августа 2006, 15:05:03
Да и лучше проверять по событию onSubmit="return CheckIt();"
Название: проверка полей
Отправлено: Greg от 21 Августа 2006, 15:35:14
всем огромное спасибо за помощь!
Название: проверка полей
Отправлено: Greg от 28 Августа 2006, 15:08:42
появился еще один вопрос: есть тэг и в нем неизвестное количество
получить доступ к выбранному значению я могу так вот: document.form_name.select_name.value
но дело в том, что мне нужно для JS-скриптане значение, которое отправляется серверу (то бишь value=""), а именно текст, который показывается для каждого из
Название: проверка полей
Отправлено: Greg от 28 Августа 2006, 15:28:19
хочу оговориться, что количество элементов option и их значения value мне неизвестны, но это можно получить из базы
Название: проверка полей
Отправлено: html_coder от 28 Августа 2006, 17:05:10
var HTMLSelectElementOptions = document.form_name.select_name.options; //Коллекция со всеми опциями
for(var i = 1; i < HTMLSelectElementOptions.length; i++) { document.write(HTMLSelectElementOptions[i].innerHTML);
//Или так document.write(HTMLSelectElementOptions[i].firstChild.nodeValue); }
Должно выводить как раз то, что тебе нужно
Название: проверка полей
Отправлено: Greg от 29 Августа 2006, 12:45:09
html_coder ээээ, дело в том, что мне нужно вывести только то, что выбрано, а не весь список. а точнее присвоить переменное выбранное значение и потом запихнуть в другую строку
пробовал так в цикле: if (HTMLSelectElementOptions1[i].selected) {some_str=HTMLSelectElementOptions1[i].innerHTML;}
//потом после цикла alert(some_str);
и ничего...
Название: проверка полей
Отправлено: Greg от 29 Августа 2006, 13:51:47
вот в общем цельный код
HTMLSelectElementOptions1 = document.srch.dir.options; StrDir= new String("");// или так: var StrDir=\'\';
for(var i = 1; i <= HTMLSelectElementOptions1.length; i++) { if (HTMLSelectElementOptions1[i].selected) { alert(HTMLSelectElementOptions1[i].innerHTML); return false } } return false; с alert() - все нормально, выводит, а если присвоить значение переменной, а потом пробовать выводить переменную - ничего.
Название: проверка полей
Отправлено: Greg от 29 Августа 2006, 14:09:05
Все! сам разобрался вот окнчательный вариант: HTMLSelectElementOptions1 = document.srch.dir.options; StrDir= new String();
for(var i = 1; i <= HTMLSelectElementOptions1.length; i++) { if (HTMLSelectElementOptions1[i].selected) { StrDir=HTMLSelectElementOptions1[i].innerHTML; break; } } alert(StrDir); return false;
Название: проверка полей
Отправлено: html_coder от 29 Августа 2006, 14:45:39
Greg а у меня всё работает.
Я только не понял одного HTMLSelectElementOptions1, что такое 1????
почему 1, или ты просто сделал у себя такую переменную?
Название: проверка полей
Отправлено: html_coder от 29 Августа 2006, 14:46:46
Цитировать
Greg: Все! сам разобрался вот окнчательный вариант:
Ну и славненько ))))
Название: проверка полей
Отправлено: Greg от 29 Августа 2006, 14:47:03
html_coder да, это просто на стестовом этапе, чтобы отличить переменную (у меня там вторая еще есть)
Название: проверка полей
Отправлено: kan1 от 31 Августа 2006, 07:29:01
var Sel=document.form_name.sel_name; str=Sel.options[Sel.selectedIndex].text; alert(str);
Название: проверка полей
Отправлено: html_coder от 31 Августа 2006, 10:00:53
kan1 полностью согласен. Greg твой земляк ближе к истине, чем я )))
Название: проверка полей
Отправлено: skynyrd от 05 Сентября 2006, 17:31:49
Greg
var HTMLSelectElement = document.form_name.select_name;
var some_str=HTMLSelectElement.options[HTMLSelectElement.selectedIndex].text; alert (some_str);