события клавиш
Ребят есть такой код.
$('.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 выводит одинаково в чем может быть причина? (а если вставляеш вместо этого кода алерт то выводит правильно при первом же нажатии) |
Цитата:
|
<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 = 'Бесплатно' ;
}
});
Ну вроде все если что то еще не хватает скажите дополню)))) но вроде как все написал |
Цитата:
|
<div class='cartsum_id'> 2 457 руб.</div> Изменяеться этот див. он изменяться и при изменение инпутов этих и есть еще парочку событий при которых этот див изменяеться. и вот мне надо сделать чтоб когда нажимаеш на кклавишу происходило событие. |
блин ну и построил конечно я предложение ))))
|
Цитата:
<!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 |
Т.е. у тебя на странице есть другой скрипт, который тоже слушает событие keypress или input.
Значит проблема в порядке обработки этого события. Получается так что твой обработчик вызывается первым. |
Самый простой и топорный фикс: заюзать нулевой setTimeout.
В идеале же ты не должен парсить всякие дивы. Получается тупо ведь: твой скрипт подсчитывает сумму и вставляет ее в div, форматируя. И следом же твой второй скрипт парсит ее из дива, через регулярку. В реале конечно так приходится делать, если скрипты написаны через жопу, и не имеют API. |
Цитата:
|
| Часовой пояс GMT +3, время: 11:27. |