jQuery - Генериране на цени от селекция, колона с динамична сума, формуляр за публикуване на обща сума

това, което бих искал да създам, е таблица с:

  1. избор на държава [когато е избрана, генерира описанието в полето за пратка и съответната цена в полето за цена]
  2. фиксирано име на продукта и фиксирана цена [лесно :-)]
  3. избор на аксесоар [генерира съответната цена в ценовото поле]
  4. обща генерирана сума, сумирайки 3-те цени
  5. изпратете общата сума с form method="post"

Пример за изображение
Това е идеята за код, който се нуждае от внедряване на jQuery:

<form action="product.php" method="post">
<h2>Select Country shipment</h2>
<select>
<option>USA $1.00</option>
<option>CANADA $2.00</option>
<option>EUROPE $3.00</option>
</select>
<br />
<br />
<table border="1" cellpadding="5">
<tr>
<td width="200"></td>
<td width="60"><strong>Price</strong></td>
</tr>
<tr>
<td>Product</td>
<td>10.00</td>
</tr>
<tr>
<td><span id="shipment_text"></span></td>
<td><span id="shipment_price"></span></td>
</tr>
<tr>
<td>
<select>
    <option value=""></option>
    <option value="Accessory1">Accessory 1 - $1.00</option>
    <option value="Accessory2">Accessory 2 - $2.00</option>
    <option value="Accessory3">Accessory 3 - $3.00</option>
</select></td>
<td><span id="accessory_price"></span></td>
</tr>
<tr>
<td align="right"><strong>Total</strong></td>
<td><span id="total"></span></td>
</tr>
</table>
<br />
<input type="hidden" id="total" name="amount" value="" />
<input type="submit" value="Submit">
</form>

Благодаря за помощта!


person Jonas    schedule 05.07.2012    source източник
comment
Защо не поставите и падащото меню за избор на държава вътре в таблицата?   -  person Tony R    schedule 06.07.2012
comment
Къде е jQuery, който сте написали и в момента имате проблеми?   -  person gn22    schedule 06.07.2012
comment
Съгласен съм с gn22, опитвали ли сте вече нещо? В противен случай мога да публикувам отговор с връзки към методите на jquery, които вероятно ще използвате. Съмнявам се, че някой ще иска да разреши всичко това вместо вас...   -  person Tony R    schedule 06.07.2012


Отговори (2)


За да направите нещо, когато изборът на държава се промени, използвайте това:

$("#country").change(function() {
    /*update description and shipping price/*
});

Имайте предвид, че трябва да добавите id="country" към избора на държава. След това можете да направите подобно нещо с другите избрани.

Като алтернатива можете да прикачите едно и също събитие към всички избрани и в манипулатора на събития да получите всички избрани опции, така че всичко да се случи на едно и също място:

$("select").change(function() {
    var country = $("#country option:selected").val();
    var accessory = $("#accessories option:selected").val();
    /* Update all selects, prices, and total accordingly */
});

Имайте предвид, че трябва да поставите value атрибути на всички опции като идентификатори. Това вероятно ще бъдат цените като сурови числа. Използвайте window.parseFloat(), за да конвертирате от атрибутен низ в число.

Важните понятия тук са .change() и :selected.

Що се отнася до изпращането на формуляра, вашият бутон за изпращане трябва да свърши работа. Ако искате ръчно да контролирате заявката и параметрите, можете да използвате $.post(), и има пример за това на тази страница с документация.

Надявам се това да помогне!

person Tony R    schedule 06.07.2012

Работеща демонстрация http://jsfiddle.net/aRDXD/1/ < strong>или http://jsfiddle.net/tyAmg/

Да знам, ако това не помогне, публикацията ми ще бъде премахната.

Също така имайте предвид :) сумата ви е в $, но общата сума е в euro :P

код

$('select').on('change', function(){
    var sum = 0;
    $('.sum').each(function(){

       sum += parseInt($(this).attr("value").replace('$',''));
    });

    $('#total').html(sum);
});

HTML

<form action="product.php" method="post">
<h2>Select Country shipment</h2>
<select class="sum">
<option value="$1.00">USA $1.00</option>
<option value="$2.00">CANADA $2.00</option>
<option value="$3.00">EUROPE $3.00</option>
</select>
<br />
<br />
<table border="1" cellpadding="5">
<tr>
<td width="200"></td>
<td width="60"><strong>Price</strong></td>
</tr>
<tr>
<td>Product</td>
<td class="sum" value="10.00">10.00</td>
</tr>
<tr>
<td><span id="shipment_text"></span></td>
<td><span id="shipment_price"></span></td>
</tr>
<tr>
<td>
<select class="sum">
    <option value=""></option>
    <option value="1.00">Accessory 1 - $1.00</option>
    <option value="2.00">Accessory 2 - $2.00</option>
    <option value="3.00">Accessory 3 - $3.00</option>
</select></td>
<td><span id="accessory_price"></span></td>
</tr>
<tr>
<td align="right"><strong>Total</strong></td>
<td><span id="total"></span></td>
</tr>
</table>
<br />
<input type="hidden" id="total" name="amount" value="" />
<input type="submit" value="Submit">
</form>
person Tats_innit    schedule 06.07.2012
comment
Изглежда добре, въпреки че получавате NaN, когато не е избран аксесоар. Също така е глупаво да съхранявате цените в атрибута стойност с '$' там и след това да го заменяте с всеки път. Просто го направете число. - person Tony R; 06.07.2012
comment
@TonyR Благодаря bruv, разбира се, :) Как си? - person Tats_innit; 06.07.2012