Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Проверка отметки radiobutton не работает (https://javascript.ru/forum/dom-window/10869-proverka-otmetki-radiobutton-ne-rabotaet.html)

boris2000 25.07.2010 20:04

Проверка отметки radiobutton не работает
 
Подскажите что делаю не так.
Есть форма, и надо проверить во всех ли группах radiobutton пользователь сделал отметку (любую? главное чтобы все отметил). Скрипт прилагаю - не работает!


// сперва функция проверки radiobutton
function getCheckedValue(radioObj) {
	if(!radioObj)
		return "";
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return "";
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
	return "";
}

// основная функция проврки и отправки формы
function CallOnSubmit(){
// массив с именами обязательных к заполнению radiobutton
var obligatory_radiobutton_array = ["articletype", "studycoverage", "studysampling", "studiedpopulationage", "studiedpopulationsex", "studiedpopulationurbanicity", "studydesign", "studyfollowup", "otherriskfactors"];
var obligatory_radiobutton_names_array = ["Article type", "Study population coverage", "Study sampling strategy", "Studied population age", "Studied population sex", "Studied population urbanicity", "Study design", "Does study include follow-up", "Do risk factors for CKD in studied population are reported"];

var string4notice = "";
for(j = 0; j <= obligatory_radiobutton_array.length; j++) {
	if (getCheckedValue(document.forms['aef'].elements[obligatory_radiobutton_array[j]]) = ""){
		string4notice = string4notice + "\n\r" + obligatory_radiobutton_names_array[j];
	}
}

if(string4notice != ""){
	string4notice = "Please note the following questions have to be answered before Abstract estimation form submission:" + "\n\r" + string4notice;
	confirm (string4notice);
}

	return false;
}


код формы
<form action="examination_step2.php" method="post" name="aef" target=_parent>

<BUTTON TYPE = BUTTON ONCLICK="CallOnSubmit();">Check</BUTTON><br>

<div class="abstract_estimation_list"><label><input type="radio" name="studydesign" value="1" />case-control study</label><br />
<label><input type="radio" name="studydesign" value="2" />cross-sectional study</label><br />
<label><input type="radio" name="studydesign" value="3" />retrospective cohort study</label><br />
<label><input type="radio" name="studydesign" value="4" />prospective cohort study</label><br />
<label><input type="radio" name="studydesign" value="5" />randomized controlled trial</label><br />
<label><input type="radio" name="studydesign" value="6" />registry report</label><br />
<label><input type="radio" name="studydesign" value="0" />not reported</label><br /></div>

 ...
и так далее для каждой группы перечисленной в массиве obligatory_radiobutton_array
...

</form>

JsLoveR 25.07.2010 20:13

boris2000,
отформатируйте код в Вашем посте. Покажите код формы и что это if(string4notice<>"") ?

exec 25.07.2010 20:17

j <= obligatory_radiobutton_array.length


Здесь очевидно выбивает ошибку, т.к. в последней итерации obligatory_radiobutton_array[j] равен undefined, т.к. length всегда на один больше кол-ва эл-тов в массиве.

float 25.07.2010 20:35

Цитата:

и что это if(string4notice<>"") ?
Наверное, автор подразумевал ==...

boris2000 25.07.2010 20:46

if(string4notice<>"") - имеется в виду что если получившееся сообщение в string4notice не пустое, то значит какие-то флажки не были отмечены и надо выдать пользователю напоминание чтобы он все отметил.

приписал -1 в код чтобы длина массива не превышала числа его значений, все равно не работает
for(j = 0; j <= obligatory_radiobutton_array.length - 1; j++) {

boris2000 25.07.2010 20:48

испарвил на просто < - не работает

for(j = 0; j [COLOR="Red"]<[/COLOR] obligatory_radiobutton_array.length; j++) {

JsLoveR 25.07.2010 21:23

Цитата:

Сообщение от boris2000
имеется в виду что если получившееся сообщение в string4notice не пустое

if(string4notice!="")

boris2000 25.07.2010 21:57

спасибо, исправил на !-. Но все равно не работает! А ведь вроде бы должно!

boris2000 25.07.2010 22:06

Путем исключения отдельных строк комментариями установил что работает все по отдельности кроме строчки
if (getCheckedValue(document.forms['aef'].elements[obligatory_radiobutton_array[j]]) = ""){

может я как-то не так ссылаюсь на объект формы?
я в JS вообще мало разбираюсь, тем более в таких вещах, я на php программирую, а в этой страничке без JS никуда ...

JsLoveR 25.07.2010 22:07

getCheckedValue(document.forms['aef'].elements[obligatory_radiobutton_array[j]]= "")

ххх, опередили))

boris2000, у Вас как-то всё кривовато, почему просто не пробегаться по всем чекбоксам и не собирать у выделенных чекбоксах value? Вам нужно просто выбранные value собирать?


Часовой пояс GMT +3, время: 11:36.