Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.10.2014, 09:27
Аспирант
Отправить личное сообщение для sloyi Посмотреть профиль Найти все сообщения от sloyi
 
Регистрация: 16.10.2014
Сообщений: 72

события клавиш
Ребят есть такой код.

$('.input-col').keypress(function (){
var lal, zaz, ends;
//достаем значение дива
lal = document.getElementById('cartsum_id').innerHTML;
//удаляем все пробелы и все знаки кроме чисел и естественно переводим его в интеджер
zaz = parseInt(lal.replace(/\D/g,''));
//Вычитаем ))
ends = 5000 - zaz;
//дальше идет вывод
if(ends > 0)
	{
	document.getElementById('ewe-tovar').innerHTML = 'Для бесплатной доставки добавьте к заказу еще товаров на '+ ends+ ' руб.' ;
	document.getElementById('price-dostavka').innerHTML = '300 руб.' ;
	}
else
	{
	document.getElementById('ewe-tovar').innerHTML = '' ;
	document.getElementById('price-dostavka').innerHTML = 'Бесплатно' ;
	}

});


Вопрос заключается в следующем. Код впринцапе все выводит и выводит ответ правильно но почему то за паздывает. Например вводиш в интуп число "1" он молчит вводиш в интуп число "2" он выдает то что должно было быть при том как ты ввел число 1 т.е. работает на второе нажати а не на первое и кейап и кейпресс и кейдав =DDD выводит одинаково в чем может быть причина? (а если вставляеш вместо этого кода алерт то выводит правильно при первом же нажатии)
Ответить с цитированием
  #2 (permalink)  
Старый 27.10.2014, 09:39
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от sloyi
в чем может быть причина?
Ты не сделал полного тестового примера... Т.ч. х/з чего там у тебя...
Ответить с цитированием
  #3 (permalink)  
Старый 27.10.2014, 09:52
Аспирант
Отправить личное сообщение для sloyi Посмотреть профиль Найти все сообщения от sloyi
 
Регистрация: 16.10.2014
Сообщений: 72

<input class=" input-col" type="text" value="Первый инпут" name="" >
<input class=" input-col" type="text" value="Второй инпут" name="" >


<div class='cartsum_id'> 2 457 руб.</div>

<div id='price-dostavka'></div>
<div id='ewe-tovar'></div>


$('.input-col').keypress(function (){
	var lal, zaz, ends;
	//достаем значение дива
	lal = document.getElementById('cartsum_id').innerHTML;
	//удаляем все пробелы и все знаки кроме чисел и естественно переводим его в интеджер
	zaz = parseInt(lal.replace(/\D/g,''));
	//Вычитаем ))
	ends = 5000 - zaz;
	//дальше идет вывод
	if(ends > 0)
	    {
	    document.getElementById('ewe-tovar').innerHTML = 'Для бесплатной доставки добавьте к заказу еще товаров на '+ ends+ ' руб.' ;
	    document.getElementById('price-dostavka').innerHTML = '300 руб.' ;
	    }
	else
	    {
	    document.getElementById('ewe-tovar').innerHTML = '' ;
	    document.getElementById('price-dostavka').innerHTML = 'Бесплатно' ;
	    }
	 
	});


Ну вроде все если что то еще не хватает скажите дополню)))) но вроде как все написал
Ответить с цитированием
  #4 (permalink)  
Старый 27.10.2014, 09:53
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от sloyi
достаем значение дива
А зачем ты его при каждом событии достаешь? Оно что, изменяется? Если изменяется то когда?
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #5 (permalink)  
Старый 27.10.2014, 10:00
Аспирант
Отправить личное сообщение для sloyi Посмотреть профиль Найти все сообщения от sloyi
 
Регистрация: 16.10.2014
Сообщений: 72

<div class='cartsum_id'> 2 457 руб.</div>


Изменяеться этот див. он изменяться и при изменение инпутов этих и есть еще парочку событий при которых этот див изменяеться. и вот мне надо сделать чтоб когда нажимаеш на кклавишу происходило событие.
Ответить с цитированием
  #6 (permalink)  
Старый 27.10.2014, 10:01
Аспирант
Отправить личное сообщение для sloyi Посмотреть профиль Найти все сообщения от sloyi
 
Регистрация: 16.10.2014
Сообщений: 72

блин ну и построил конечно я предложение ))))
Ответить с цитированием
  #7 (permalink)  
Старый 27.10.2014, 10:03
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от sloyi
но вроде как все написал
У меня вообще ничего не происходит при редактировании инпутов...

<!DOCTYPE html>
<html>
<head>
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<link rel='stylesheet type=text/css href=tmp.css' />
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
$(function (){
	$('.input-col').keypress(function (){
		var lal, zaz, ends;
		//достаем значение дива
		lal = document.getElementById('cartsum_id').innerHTML;
		//удаляем все пробелы и все знаки кроме чисел и естественно переводим его в интеджер
		zaz = parseInt(lal.replace(/\D/g,''));
		//Вычитаем ))
		ends = 5000 - zaz;
		//дальше идет вывод
		if(ends > 0) {
			document.getElementById('ewe-tovar').innerHTML = 'Для бесплатной доставки добавьте к заказу еще товаров на '+ ends+ ' руб.' ;
			document.getElementById('price-dostavka').innerHTML = '300 руб.' ;
		} else {
			document.getElementById('ewe-tovar').innerHTML = '' ;
			document.getElementById('price-dostavka').innerHTML = 'Бесплатно' ;
		};
		 
	});
});
</script>
</head>
<body>
<input class=" input-col" type="text" value="Первый инпут" name="" >
<input class=" input-col" type="text" value="Второй инпут" name="" >
<div class='cartsum_id'> 2 457 руб.</div>
<div id='price-dostavka'></div>
<div id='ewe-tovar'></div>
</body>
</html>

Ошибка...

Unhandled Error: Cannot convert 'document.getElementById('cartsum_id')' to object
Ответить с цитированием
  #8 (permalink)  
Старый 27.10.2014, 10:04
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Т.е. у тебя на странице есть другой скрипт, который тоже слушает событие keypress или input.

Значит проблема в порядке обработки этого события. Получается так что твой обработчик вызывается первым.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #9 (permalink)  
Старый 27.10.2014, 10:09
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Самый простой и топорный фикс: заюзать нулевой setTimeout.

В идеале же ты не должен парсить всякие дивы. Получается тупо ведь:
твой скрипт подсчитывает сумму и вставляет ее в div, форматируя.
И следом же твой второй скрипт парсит ее из дива, через регулярку. В реале конечно так приходится делать, если скрипты написаны через жопу, и не имеют API.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #10 (permalink)  
Старый 27.10.2014, 10:11
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от sloyi
<div class='cartsum_id'> 2 457 руб.</div>


Изменяеться этот див.
А в своем скрипте ты обращаешся к нему по ИД...
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка события внутри события grifangel Общие вопросы Javascript 6 04.09.2014 12:34
Запрет события Click на дочернем элементе, кот. находится за рамками родителя Smokvin Events/DOM/Window 11 10.11.2013 01:53
Дебаг js, или как найти обработчик события для тега jimm88 Events/DOM/Window 1 18.04.2012 15:11
Передача параметров в колбэки и дальнейшее их вешанье на события. Gremlin Общие вопросы Javascript 17 13.08.2011 08:54
Явный вызов процедуры обработки события. supchik Общие вопросы Javascript 18 27.01.2009 13:16