события клавиш
Ребят есть такой код.
$('.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, время: 10:58. |