Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Динамическое изменение цен. (https://javascript.ru/forum/jquery/42722-dinamicheskoe-izmenenie-cen.html)

LittlePony 09.11.2013 14:29

Цитата:

Сообщение от Faab (Сообщение 280225)
русский шрифт в id это нормально?

Строго говоря, даже в css селекторы, набранные кириллицей, будут работать.
Но да, не принято.

Batyabest 10.11.2013 12:32

Цитата:

Сообщение от Faab (Сообщение 280225)
Я же писал тебе: я не вижу у тебя сложения.

При изменении (change) одного из аттрибутов, я бы заново узнал все значения твоих аттрибутов, потом бы сложил их, и вывел бы конечную цену.


Примечание 1: русский шрифт в id (#коробочный_брус_с_уплотни елем_1_шт_field) это нормально? Я бы так не рисковал.

Примечание 2: надеюсь ты понимаешь, что нужна проверка после того как ты поместил в atrribut2 какое то значение.
var atrribut2 = jQuery("#коробочный_брус_с_уплотнителем_1_шт_field option:selected").attr("title");

Тебе же нужны цифры, а не само строчное значение одной из опций списка. Ставь тут же проверку: если пользователь выбрал то-то, то числовое значение этого слагаемого будет таким-то и тд. Есть ещё варианты, но могу запутать тебя.

Мне кажется, я не догоню как это сделать. Мог бы ты мне все расписать подробнее?
Кроме того, если не менять значения размера полотная, то он отдает цена : undefined
Мне кажется тут в коде что-то нужно изменить
jQuery('span.productPrice').replaceWith('<span class="productPrice">'+jQuery(".inputboxattrib option:selected").attr("title")+'</span>');

Faab 10.11.2013 16:03

Вот пример решения, но есть разные решения, под твои условия.

<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<style type="text/css"></style>

</head>
<body>
<script>
$(document).ready(function(){
  jQuery(".inputA").change(function () {
    var nalchikValue = parseInt($('#nalichnikField').val());
    var doborValue = parseInt($('#doborField').val()); //doborField
    var totalPrice = nalchikValue + doborValue;
    
    jQuery('span.productPrice').replaceWith('<span class="productPrice">' + totalPrice + '</span>');
  });
});
</script>
<select class="inputA" id="nalichnikField">
  <option value="0">не выбрано</option>
  <option title="220.00 руб." value="220.00 руб.">темный орех</option>
</select>
<select class="inputA" id="doborField">
  <option value="0">не выбрано</option>
  <option title="380.00 руб." value="380.00 руб.">10 см темный орех</option>
  <option title="490.00 руб." value="490.00 руб">15 см темный орех</option>
  <option title="640.00 руб." value="640.00 руб.">20 см темный орех</option>
</select>
<div>
  <span class="productPrice">0</span> руб.
</div>
</body>
</html>

Batyabest 12.12.2013 16:08

Проблема с тем что не считались другие поля со свойствами решена путем добавления такого кода.
//функция разделитель тысячных
function thousandSep(val) {
    return String(val).split("").reverse().join("")
                  .replace(/(\d{3}\B)/g, "$1 ")
                  .split("").reverse().join("");
}

//функция подсчета цены
function setPriceView() {
	
	var price = 0;
	
	jQuery(".inputboxattrib option:selected").each(function(){ //проходимся по всем инпутам
		price += parseFloat(jQuery(this).attr('title').replace(/\s+/g, '')); //парсим цену из атрибутов
	});
	
	console.log(price);
	
	var number = parseFloat(jQuery(".inputboxquantity").val()); //получаем количество
	var totalPrice = price*number; //считаем цену
	
	totalPrice = thousandSep(totalPrice.toFixed(2)); //приводим цену к нужному виду
	
	jQuery('span.productPrice').replaceWith('<span class="productPrice">'+totalPrice+' руб.</span>');//вставляем цену на страницу
};

jQuery(document).ready(function(){

jQuery(".inputboxattrib").change(function () {setPriceView(); }); //вешаем обработчик на изменение полотно и витража
jQuery(".inputboxquantity").change(function () {setPriceView(); }); //вешаем обработчик на изменение количества
jQuery(".quantity_box_button").click(function () {setPriceView(); }); //вешаем обработчик на кнопки изменения количества
});


Проблема теперь в том, что он все цены умножает на общее количество, а как сделать свое поле ввода количества? (сайт на Joomla и VM 1.1.9)


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