Javascript.RU

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

Подскажите новачку: Не работает в IE, Chrome и Safari
Народ плиз подскажите, я только сегодня сел за джава скрипт все вроде радотает, но в IE, Chrome и Safari нехочет. У когото есть идеи?

<script language="JavaScript">
function countit(form) {

	var TicketCount 		= form.TicketCount.value;
	var TicketVipCount	 	= form.TicketVipCount.value;
	var TableCount			= form.TableCount.value;
	
	var TicketPrice			= 40; 
	var TicketVipPrice		= 100; 
	var TablePrice			= 50;
	
	var MyCount				= 278;
	
 if (TicketPrice != '0') {
	var TicketExit			= parseFloat(TicketPrice) * TicketCount;
 }
 else {
	var TicketExit			= 0;
 }
 
 if (TicketVipPrice != '0') {
	var TicketVipExit 		= parseFloat(TicketVipPrice) * TicketVipCount;
 }
 else {
	var TicketVipExit 		= 0;
 }
 
 if (TablePrice != '0') {
	var TableExit 			= parseFloat(TablePrice) * TableCount;
 }
 else {
	var TableExit	 		= 0;
 }
	
	var SumPrice = TicketExit + TicketVipExit + TableExit;

 if (SumPrice >= MyCount) {
    document.getElementById('but').disabled = true;
	var NeedToPay = SumPrice - MyCount;
	document.getElementById('debug').innerHTML = 'ERROR :) '+ NeedToPay +' ';
 }
 else {
    document.getElementById('but').disabled = false;
	document.getElementById('debug').innerHTML = SumPrice.toFixed(2);
 }
 
}
</script>

<form method="POST" onChange="countit(this)">
	<table border="0" cellspacing="4" cellpadding="3">
	<tr><td style="color: #3A7611; vertical-align: middle">Кількість квитків:</td><td><select name="TicketCount" size="1"><option>0</option><option>1</option><option>2</option><option>3</option><option>4</option><option>5</option><option>6</option><option>7</option><option>8</option><option>9</option><option>10</option><option>11</option><option>12</option><option>13</option><option>14</option><option>15</option><option>16</option><option>17</option><option>18</option><option>19</option><option>20</option></select></td></tr>

	<tr><td style="color: #3A7611; vertical-align: middle">Кількість VIP квитків:</td><td><select name="TicketVipCount" size="1"><option>0</option><option>1</option><option>2</option></select></td></tr>
	<tr><td style="color: #3A7611; vertical-align: middle">Кількість столиків:</td><td><select name="TableCount" size="1"><option>0</option><option>1</option><option>2</option><option>3</option><option>4</option><option>5</option><option>6</option><option>7</option><option>8</option><option>9</option><option>10</option><option>11</option><option>12</option></select></td></tr>
	</table>

<input type="submit" id="but">
</form>

<div id="debug"></div>
Ответить с цитированием
  #2 (permalink)  
Старый 22.01.2009, 19:07
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

откуда у формы onchange? у select, например, есть

к элементам лучше обращаться form.elements['name'].value

var TicketExit =   TicketPrice   ? parseFloat(TicketPrice) * TicketCount
                                 : 0;
Ответить с цитированием
  #3 (permalink)  
Старый 22.01.2009, 23:57
Интересующийся
Отправить личное сообщение для Nichol Посмотреть профиль Найти все сообщения от Nichol
 
Регистрация: 22.01.2009
Сообщений: 10

Сообщение от x-yuri Посмотреть сообщение
откуда у формы onchange? у select, например, есть

var TicketExit =   TicketPrice   ? parseFloat(TicketPrice) * TicketCount
                                 : 0;
к сожелению ничего с етого что ти написал я не понял, я ввобщето php програмер а к джава скрипт практически ничего не шарю

Очень било б класно если б кто написал решение с коментариями
Ответить с цитированием
  #4 (permalink)  
Старый 23.01.2009, 01:52
...
Отправить личное сообщение для Zibba Посмотреть профиль Найти все сообщения от Zibba
 
Регистрация: 13.10.2008
Сообщений: 225

var TicketExit =   TicketPrice   ? parseFloat(TicketPrice) * TicketCount
                                 : 0;


это упрощенная запись:

if (TicketPrice != '0') {
    var TicketExit            = parseFloat(TicketPrice) * TicketCount;
 }
 else {
    var TicketExit            = 0;
 }


С использованием тернарного оператора ? :

И у формы нет метода onchange он есть у элемента select, т.е. Вам нужно вешать обработчик на каждый select, примерно так:
<select name="TicketCount" size="1" onChange="countit(this)">

только в таком случае, для Вашей функции придется передавать не this, а саму форму в которой находится select, либо получать форму из самой функции.

Последний раз редактировалось Zibba, 23.01.2009 в 01:55.
Ответить с цитированием
  #5 (permalink)  
Старый 23.01.2009, 13:59
Интересующийся
Отправить личное сообщение для Nichol Посмотреть профиль Найти все сообщения от Nichol
 
Регистрация: 22.01.2009
Сообщений: 10

все вроде понял, только кроме етого:

Сообщение от Zibba Посмотреть сообщение
... либо получать форму из самой функции.

если ктото может навести хоть какой пример.
Ответить с цитированием
  #6 (permalink)  
Старый 23.01.2009, 14:04
...
Отправить личное сообщение для Zibba Посмотреть профиль Найти все сообщения от Zibba
 
Регистрация: 13.10.2008
Сообщений: 225

Задаете id своей форме например id="form" и дальше получаете при помощи document.getElementById("form");
Ответить с цитированием
  #7 (permalink)  
Старый 27.01.2009, 00:35
Интересующийся
Отправить личное сообщение для Nichol Посмотреть профиль Найти все сообщения от Nichol
 
Регистрация: 22.01.2009
Сообщений: 10

Смотрите зделал так:

<script language="JavaScript">
function Count(form) {

	var TicketCount 		= document.getElementById('TicketCount');
	var TicketVipCount 		= document.getElementById('TicketVipCount');
	var TableCount	 		= document.getElementById('TableCount');

	var TicketPrice			= 40; 
	var TicketVipPrice		= 100; 
	var TablePrice			= 50;
	
	var MyCount				= 278;
	
 if (TicketPrice != '0') {
	var TicketExit			= parseFloat(TicketPrice) * TicketCount.value;
 }
 else {
	var TicketExit			= 0;
 }
	
if (TicketVipPrice != '0') {
	var TicketVipExit 		= parseFloat(TicketVipPrice) * TicketVipCount.value;
 }
 else {
	var TicketVipExit 		= 0;
 }
 
 if (TablePrice != '0') {
	var TableExit 			= parseFloat(TablePrice) * TableCount.value;
 }
 else {
	var TableExit	 		= 0;
 }
	
	var SumPrice = TicketExit + TicketVipExit + TableExit;

 if (SumPrice >= MyCount) {
    document.getElementById('but').disabled = true;
	var NeedToPay = SumPrice - MyCount;
	document.getElementById('debug').innerHTML = 'ERROR :) '+ NeedToPay +' ';
	document.getElementById('sum').innerHTML = '';
 }
 else {
    document.getElementById('but').disabled = false;
	document.getElementById('debug').innerHTML = '';
	document.getElementById('sum').innerHTML = SumPrice.toFixed(2);
 }
 
}
</script>


<form method="POST">
	<table border="0" cellspacing="4" cellpadding="3">
		<tr><td style="color: #3A7611; vertical-align: middle; width: 300px">Кількість квитків:</td><td><select id="TicketCount" onChange="Count(this)" name="TicketCount" size="1" style="width: 50px"><option>0</option><option>1</option><option>2</option><option>3</option><option>4</option><option>5</option><option>6</option><option>7</option><option>8</option><option>9</option><option>10</option><option>11</option><option>12</option><option>13</option><option>14</option><option>15</option><option>16</option><option>17</option><option>18</option><option>19</option><option>20</option></select></td></tr>

		<tr><td style="color: #3A7611; vertical-align: middle">Кількість VIP квитків:</td><td><select id="TicketVipCount" onChange="Count(this)" name="TicketVipCount" size="1" style="width: 50px"><option>0</option><option>1</option><option>2</option></select></td></tr>
		<tr><td style="color: #3A7611; vertical-align: middle">Кількість столиків:</td><td><select id="TableCount" onChange="Count(this)" name="TableCount" size="1" style="width: 50px"><option>0</option><option>1</option><option>2</option><option>3</option><option>4</option><option>5</option><option>6</option><option>7</option><option>8</option><option>9</option><option>10</option><option>11</option><option>12</option></select></td></tr>

	</table>

<input type="submit" id="but" value="увійти" class="buttom_small">
</form>



все вроде нормально, пашет всюда кроме IE. исправте пожалуйста!!!
Ответить с цитированием
  #8 (permalink)  
Старый 27.01.2009, 01:08
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

включи отладку в ie (Tools/Internet Options/Advanced/Disable Script Debugging) и посмотри, что ему не нравится

в HTML 4.01 атрибут name тэга form считается deprecated, но по идее можно обращаться к форме по id
document.forms[<formId>].elements[<elementName>]

где <elementName> - значение атрибута name элемента формы

не имеет смысла передавать в функцию this и принимать в ней не используемый параметр form, там более что теперь он указывает на элемент формы
Ответить с цитированием
  #9 (permalink)  
Старый 27.01.2009, 01:19
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

хотя можно этот this использовать: переименовать form -> el и писать el.form.elements[<elementName>], чтобы получить доступ к другим элементам формы
Ответить с цитированием
  #10 (permalink)  
Старый 27.01.2009, 02:06
Интересующийся
Отправить личное сообщение для Nichol Посмотреть профиль Найти все сообщения от Nichol
 
Регистрация: 22.01.2009
Сообщений: 10

тоесть моя ошибка только в том, что я неверно передаю з поля дание? а все прочиие верно?
Ответить с цитированием
Ответ



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

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