Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.05.2011, 20:23
Новичок на форуме
Отправить личное сообщение для palladin_jedi Посмотреть профиль Найти все сообщения от palladin_jedi
 
Регистрация: 15.05.2011
Сообщений: 7

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

Подскажите, где я ошибся в цикле?
Ответить с цитированием
  #2 (permalink)  
Старый 16.05.2011, 09:33
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от palladin_jedi
Подскажите, где я ошибся в цикле?
Чему равна у тебя les1 в этой строчке...
var les1 = document.getElementsByClassName('lesson1');
Ответить с цитированием
  #3 (permalink)  
Старый 16.05.2011, 16:09
Новичок на форуме
Отправить личное сообщение для palladin_jedi Посмотреть профиль Найти все сообщения от palladin_jedi
 
Регистрация: 15.05.2011
Сообщений: 7

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
Ответить с цитированием
  #4 (permalink)  
Старый 16.05.2011, 16:23
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

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>


Давай продолжай... Иначе разговор просто ни о чём...
Ответить с цитированием
  #5 (permalink)  
Старый 16.05.2011, 16:35
Новичок на форуме
Отправить личное сообщение для palladin_jedi Посмотреть профиль Найти все сообщения от palladin_jedi
 
Регистрация: 15.05.2011
Сообщений: 7

Страница по адресу http://www.myati.org/2222.html
Ответить с цитированием
  #6 (permalink)  
Старый 16.05.2011, 16:47
Новичок на форуме
Отправить личное сообщение для palladin_jedi Посмотреть профиль Найти все сообщения от palladin_jedi
 
Регистрация: 15.05.2011
Сообщений: 7

Смысл скрипта - чтобы при выбранном чекбоксе "Гигабайт" и более чем 3-х уроков выводился алерт...
Ответить с цитированием
  #7 (permalink)  
Старый 16.05.2011, 16:52
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от palladin_jedi
Страница по адресу
Ты тут давай... Зачем мне куда-то по ссылкам лазить...

Только пример должен быть тестовый. Т.е. маленький и отражающий суть проблемы. В больших партянках я копаться не стану...
Ответить с цитированием
  #8 (permalink)  
Старый 16.05.2011, 17:00
Новичок на форуме
Отправить личное сообщение для palladin_jedi Посмотреть профиль Найти все сообщения от palladin_jedi
 
Регистрация: 15.05.2011
Сообщений: 7

<html>
<head>
<title>Arts &amp; 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>


Вот, коротенько

Последний раз редактировалось palladin_jedi, 16.05.2011 в 17:11. Причина: Сократил...
Ответить с цитированием
  #9 (permalink)  
Старый 16.05.2011, 21:06
Новичок на форуме
Отправить личное сообщение для palladin_jedi Посмотреть профиль Найти все сообщения от palladin_jedi
 
Регистрация: 15.05.2011
Сообщений: 7

Так и не нашел в чем беда, но вот так работает:
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; 
          
          
        }  
        } 
        }
Ответить с цитированием
  #10 (permalink)  
Старый 16.05.2011, 23:15
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от palladin_jedi
при выбранном чекбоксе "Гигабайт"
Это у тебя вроде как радиобаттон...

Сообщение от palladin_jedi
но вот так работает
Тебя кто так отступы ставить учил?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с динамическим формированием select elepsion jQuery 1 31.10.2010 14:31
Передача всех Options из Select (не только выбранных) dm1tr1y Общие вопросы Javascript 6 23.03.2009 18:51