Проверка количества выбранных 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, время: 09:27. |