Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Цена с рублями, нужно оставить только цифры (https://javascript.ru/forum/jquery/44825-cena-s-rublyami-nuzhno-ostavit-tolko-cifry.html)

alexmixaylov 03.02.2014 20:06

Цена с рублями, нужно оставить только цифры
 
Хочу сделать проверку и написать условие
ячейка содержит цену и символы валюты (руб.)

например 1800 руб.

мне нужно чтобы скрипт считал сумму
а текстовые символы мешают

как сделать чтобы скрипт учитывал только число, но не принимал во внимание буквы????

СПАСИБО

рони 03.02.2014 20:27

alexmixaylov, поиск!!!
только цифры

alexmixaylov 04.02.2014 11:08

Спасибо почитал
но все равно не понял
может нечетко сформулировал вопрос
уточню

есть ячейка со значением 1000 руб.
для расчета стоимости доставки нужно получить числовое значение

рони 04.02.2014 11:42

alexmixaylov,
нарисуйте вашу ячейку в html
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

Vlasenko Fedor 04.02.2014 13:25

var num = "1800 руб.";
      alert(+num.replace(" руб.", "") + 10);
      alert(+num.slice(0, -5) + 20);

danik.js 04.02.2014 14:05

var price = '1000 руб.';
alert(parseFloat(price));

alexmixaylov 04.02.2014 14:35

сделал так
var getSumm = document.getElementById('total').innerHTML;/*получаем значение корзины*/
      var summa = getSumm.replace(/[^\d]/gi, ''); /*убираем буквы и пробелы*/


спасибо всем за помощь
теперь нужно чтобы элемент с id="total" определялся не один раз
а отслеживались изменения его значения

danik.js 04.02.2014 14:55

alexmixaylov, можно узнать почему не подошел parseInt() / parseFloat() ?

krasovsky 04.02.2014 15:06

Цитата:

теперь нужно чтобы элемент с id="total" определялся не один раз
а отслеживались изменения его значения
#total - это инпут?тогда
document.getElementById('total').addEventListener('onchange',function(){
//твой код на ончейндж
})

если это не инпут а див например - то setInterval() используй

Кстати я честно не помню как addEventListener объявляется, так что тупо копировать не стоит.

danik.js 04.02.2014 15:25

Цитата:

Сообщение от krasovsky
#total - это инпут?

Врядли, если он через innerHTML забирает цену.
Цитата:

Сообщение от krasovsky
если это не инпут а див например - то setInterval() используй

Очень хреновый совет. Это как спрятать какую-то вещь от самого себя и тут же начать ее искать )))
Цену (свойство total.innerHTML) ты сам ведь меняешь (через скрипт), соответственно незачем "вслепую", по интервалу отлавливать это изменение.
Цитата:

Сообщение от krasovsky
Кстати я честно не помню как addEventListener объявляется

Не onchange, а change

krasovsky 05.02.2014 09:12

Цитата:

Врядли, если он через innerHTML забирает цену.
Да точно.
Цитата:

Очень хреновый совет. Это как спрятать какую-то вещь от самого себя и тут же начать ее искать )))
Цену (свойство total.innerHTML) ты сам ведь меняешь (через скрипт), соответственно незачем "вслепую", по интервалу отлавливать это изменение.
Разные бывают ситуации, может человек не хочет зависеть от эвентов - ochange,mosedown,click или нужно постоянное равноразмеренное отображение где то цены

danik.js 05.02.2014 12:11

Цитата:

Сообщение от krasovsky
может человек не хочет зависеть от эвентов

Вообще-то цена только по событию и может измениться! Не может она просто так взять и измениться сама по себе! Так почему же не запустить кастомное событие, скажем priceChange? А дальше просто навесить обработчик этого события, который должен как-то на него реагировать. Интервал в таких случаях - признак плохого кода и слабых знаний разработчика, уж поверь.


Часовой пояс GMT +3, время: 06:58.