Проверка количества выбранных select на странице
Доброго времени суток, помогите, пожалуйста, разобратся с проверкой неработающего скрипта на странице, а то я уже себе весь мозг сломал... :(
Задача - посчитать количество select'ов в которых что-то выбрано, если выбрано больше 3-х - вывести предупреждение... function validate_form ( ) { valid = true; if ( document.contact_form.firstname.value == "" ) { alert ( "Please enter your first name" ); //Проверка введено ли имя valid = false; } else if ( document.contact_form.lastname.value == "" ) { alert ( "Please enter your last name." ); //Проверка введена ли фамилия valid = false; } else if ( document.contact_form.email.value == "" ) { alert ( "Please enter your e-mail." ); //Проверка введен ли мейл valid = false; } else if ( document.getElementById('Gigabyte').checked == true ) { checkedlesson1=0; //Проверка на количество выбраных уроков var les1 = document.getElementsByClassName('lesson1'); for(var i=0; i<les1.lenght; i++) { if (les1[i].selectedIndex > 0) //Проверяем выбраность по индексу { checkedlesson1++; if (checkedlesson1 > 3) { alert ( "You can select only 3 classes in session" ); valid = false; break; } } } } return valid; } Пример select'а который на странице: <select name='_u490669324115195345' class="lesson1"> <option value='None'>None</option> <option value='MW 4:45 - 5:35'>MW 4:45 - 5:35</option> <option value='TTH 5:45 - 6:35'>TTH 5:45 - 6:35</option> </select> Само условие document.getElementById('Gigabyte').checked == trueсрабатывает, если закомментить весь цикл кроме алерта, алерт выводится... Подскажите, где я ошибся в цикле? |
Цитата:
var les1 = document.getElementsByClassName('lesson1'); |
0: [object HTMLSelectElement]
1: [object HTMLSelectElement] 2: [object HTMLSelectElement] 3: [object HTMLSelectElement] 4: [object HTMLSelectElement] length: 5 item: function item() { [native code] } namedItem: function namedItem() { [native code] } Дамп выводдил через функцию http://snippets.org.ua/page/var_dump-v-javascript |
palladin_jedi, давай таки тестовый пример полный делай...
Это вот тебе "начало" <!DOCTYPE html> <html> <head> <title>test</title> <style type="text/css"> </style> <script type="text/javascript"> function validate_form() { valid = true; if ( document.contact_form.firstname.value == "" ) { alert ( "Please enter your first name" ); //Проверка введено ли имя valid = false; } else if ( document.contact_form.lastname.value == "" ) { alert ( "Please enter your last name." ); //Проверка введена ли фамилия valid = false; } else if ( document.contact_form.email.value == "" ) { alert ( "Please enter your e-mail." ); //Проверка введен ли мейл valid = false; } else if ( document.getElementById('Gigabyte').checked == true ) { //Проверка на количество выбраных уроков checkedlesson1=0; var les1 = document.getElementsByClassName('lesson1'); for(var i=0; i<les1.lenght; i++) { //Проверяем выбраность по индексу if (les1[i].selectedIndex > 0) { checkedlesson1++; if (checkedlesson1 > 3) { alert ( "You can select only 3 classes in session" ); valid = false; break; } } } } return valid; } </script> </head> <body> <select name='_u490669324115195345' class="lesson1"> <option value='None'>None</option> <option value='MW 4:45 - 5:35'>MW 4:45 - 5:35</option> <option value='TTH 5:45 - 6:35'>TTH 5:45 - 6:35</option> </select> </body> </html> Давай продолжай... Иначе разговор просто ни о чём... |
Страница по адресу http://www.myati.org/2222.html
|
Смысл скрипта - чтобы при выбранном чекбоксе "Гигабайт" и более чем 3-х уроков выводился алерт...
|
Цитата:
Только пример должен быть тестовый. Т.е. маленький и отражающий суть проблемы. В больших партянках я копаться не стану... :) |
<html> <head> <title>Arts & Technology Institute - Grades 7+ Registration</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <SCRIPT type="text/javascript"> function validate_form ( ) { valid = true; if ( document.contact_form.firstname.value == "" ) { alert ( "Please enter your first name" ); valid = false; } else if ( document.contact_form.lastname.value == "" ) { alert ( "Please enter your last name." ); valid = false; } else if ( document.contact_form.email.value == "" ) { alert ( "Please enter your e-mail." ); valid = false; } else if ( document.getElementById('Gigabyte').checked == true ) { var checkedlesson1=0; var les1 = document.getElementsByClassName('lesson1'); //dump(les1); for(var i=0; i<les1.lenght; i++) { if (les1[i].selectedIndex > 0) { checkedlesson1++; } if (checkedlesson1 > 3) { alert ( "You can select only 3 classes in session" ); valid = false; } } } return valid; } </SCRIPT> </HEAD><BODY> <form NAME="contact_form" target="_parent" action="https://www.paypal.com/cgi-bin/webscr" onsubmit="return validate_form ( );" method="POST"> <h2>Registration Form for Grades 7+</h2> <h2 style=" text-align: left; ">Student Information<br /></h2> <P><b>Student Name:</b> <br>First <INPUT type="text" name="firstname"> <br>Last <INPUT type="text" name="lastname"></P> Email <input type="email" name="email"><br /> I am registering my child for <br /> <input type="radio" name="package" id="Gigabyte" value="Gigabyte">Gigabyte Package (18 weeks/$900) - choose classes in EACH session<br /> <input type="radio" name="package" id="Megabyte" value="Megabyte">Megabyte Package ( 6 weeks / $350) - choose 1 class during ONE of the sessions<br /> <h2 style=" text-align: left; ">Fall 1(08/22 - 09/30)<br /></h2> <label for="input-490669324115195345">Game Design </label> <select name='_u490669324115195345' class="lesson1"> <option value='None'>None</option> <option value='MW 4:45 - 5:35'>MW 4:45 - 5:35</option> <option value='TTH 5:45 - 6:35'>TTH 5:45 - 6:35</option> </select><br> <label for="input-935740590395833715">Video Production </label> <select name='_u935740590395833715' class="lesson1"> <option value='None'>None</option> <option value='MW 5:45 - 6:35'>MW 5:45 - 6:35</option> <option value='TTH 3:45 - 4:35'>TTH 3:45 - 4:35</option> </select><br> <label for="input-235237238495360178">Animation </label> <select name='_u235237238495360178' class="lesson1"> <option value='None'>None</option> <option value='MW 4:45 - 5:35'>MW 4:45 - 5:35</option> <option value='TTH 5:45 - 6:35'>TTH 5:45 - 6:35</option> </select><br> <label for="input-464793333786953999">Teen Robotics </label> <select name='_u464793333786953999' class="lesson1"> <option value='None'>None</option> <option value='MW 5:45 - 6:35'>MW 5:45 - 6:35</option> <option value='TTH 3:45 - 4:35'>TTH 3:45 - 4:35</option> </select><br> <label for="input-241873157684688422">Digital Photo </label> <select name='_u241873157684688422' class="lesson1"> <option value='None'>None</option> <option value='MW 4:45 - 5:35'>MW 4:45 - 5:35</option> <option value='TTH 5:45 - 6:35'>TTH 5:45 - 6:35</option> </select><br> <input type="submit" name="cmdsubmit" value="Pay now" /></P> </FORM> </BODY></HTML> Вот, коротенько :) |
Так и не нашел в чем беда, но вот так работает:
else if ( document.getElementById('Gigabyte').checked == true ) { var checkedlesson1=0; var les1 = document.getElementsByClassName('lesson1'); //dump(les1); for(var i=0; i<les1.lenght; i++) { if (les1[i].selectedIndex > 0) { checkedlesson1++; } if (checkedlesson1 > 3) { alert ( "You can select only 3 classes in session" ); valid = false; } } } |
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 21:26. |