根据尺寸改变价格并显示尺寸

时间:2013-05-31 10:53:15

标签: php javascript jquery forms

我一直试图这样做几天,但我似乎无法使其发挥作用。 我想根据用户选择的鞋码改变价格。但我需要知道checkout.php上的选择大小。我的checkout.php已经开始工作但是我需要获得这个尺寸的尺寸和奖品。在选择选项中,我已经指出价格和价格的大小。请帮助。

<div class="content_half float_r">
    <form id="add2cart" name="cart" method="Post" action="<?php fetchdir($bpages); ?>cart.php">
             <table>
                    <tr>
                        <td width="160">Price:</td>
                        <td name="price" id="price"><?php echo $row ['Start_Cost']; ?></td>

                    </tr>

                <tr>
                 <td for="size" width="160">size*:</td>
                <td>
                <select name="size" class="small" id ="size">
                                <option value="">12 size</option> // the price tag already have the start_Cost for this size
                        <option value="">14 size(£30.00)</option>
                    <option value="">16 size(£35.00)</option>
                        <option value="">18 size(£40.00)</option>
                    <option value="">20 size(£45.00)</option>
                        <option value="">22 size(£55.00)</option>
                            <option value="">24 size(£60.00)</option>
                    <option value="">26 size(70.00)</option>
                            <option value="">28 size(£80.00)</option>
                   </select>
                </td>

                </tr>   
        <tr>
             // you choose size
            <td> size: // the size the person choose will go down here
             </td>

    </tr>   

            <tr>
                        <td>Quantity</td>
                        <td><input type="text" name="Qty" value="1" style="width: 20px; text-align: right" /></td>

                    </tr>       
                </table>    
                <div class="cleaner h20"></div>

                <input type="hidden" name="pid" id="id" value="<?php echo $id; ?>" />
                <input type="Submit" class="button" name="button" id="button" value="Add to shopping cart"/>
                </form>             
            </div>

2 个答案:

答案 0 :(得分:1)

首先,您可能只想通过将鞋子尺寸提供给选项的值属性来发送鞋码。选项内的文本只是一个标签。

<option value="12">12 size</option>

第二也是最重要的:你永远不会希望客户告诉你价格是多少!决不!如果黑客出现,他可以轻松提交大小设置为12并且价格设置为0的表单。您不想免费发送这些表单吗?哈克,如果他发送负值,甚至可能要退还给他。因此,请修改您的PHP脚本以从内部数组或其他东西计算/查找价格。或者确保至少彻底验证输入。


要更新价格,您可以使用jQuery.ajax调用一个简单的鞋子大小并返回价格的PHP脚本。 我的意思是看jsFiddle这个{{3}}。您必须使用您的新PHP脚本替换ajax URL。阅读ajax文档,了解如何正确传递输入和输出数据。在写入数据之前,您还可以将价格乘以数量。

答案 1 :(得分:0)

以下是您的工作示例 LIVE DEMO

请注意我添加<span>以便能够在我想要的位置插入文本。我还添加了一些id来帮助您选择正确的DOM元素。

以下是基于JavaScript的{​​{1}}。

jQuery

您所要做的就是使用// initially provide data var shoeData = { 12: 25, 14: 30, 16: 35 } $(function () { $(document).ready(function () { // dynamically create the options in the select $.each(shoeData, function (key, value) { $("#size").append($("<option>", { "value": key, "text": key + " size(£" + value + ")" })); }); // display the initial data updateHandler(); }); // register for update events on the input fields $("#size").on('change', updateHandler); $("#qty").on('input', updateHandler); }); // handle update events (when an input field was changed) function updateHandler() { // accumulate the data var value = $("#size").val(); var quantity = $("#qty").val(); var price = shoeData[value]; var endPrice = price * quantity; // display the data $('#priceDisplay').html(price); $("#sizeDisplay").html(value); $("#totalDisplay").html(endPrice); } 为数据填充shoeData对象,如下所示:

php

当客户更改鞋子尺寸或数量时,只需将字符串写入相应var shoeData = { 12: <?php echo $row [ 'Start_Cost']; ?>, 14: <?php echo "30"; ?>, 16: <?php echo $priceForSize16; ?>, } 的“html”属性即可更新总数,价格和鞋子信息。

您的span将按预期收到该表单 - 这意味着您将获得“cart.php”和“Qty”。您必须根据size的值在PHP中查找价格,然后将其乘以$REQUEST["size"]的值才能获得总价。