JQuery расчет не работает - PullRequest
2 голосов
/ 17 ноября 2011

У меня проблема с работой плагина для вычисления jquery. Я пытался бесконечно, и из-за недостатка знаний JavaScript это было довольно сложно.

Вот мой код:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>

</head>

<body>


<table width="500">
<col style="width: 50px;" />
<col />
<col style="width: 60px;" />
<col style="width: 110px;" />
<tr>
    <th>
        Qty
    </th>
    <th align="left">
        Product
    </th>
    <th>
        Price
    </th>
    <th>
        Total
    </th>
</tr>
<tr>
    <td align="center">
        <input type="text" name="qty_item_1" id="qty_item_1" value="1" size="2" />
    </td>
    <td>
        Bottle 1
    </td>
    <td align="center" id="price_item_1">
        £29.00
    </td>
    <td align="center" id="total_item_1">
        £29.00
    </td>
</tr>
<tr>
    <td align="center">
        <input type="text" name="qty_item_2" id="qty_item_2" value="1" size="2" />
    </td>
    <td>
       Bottle 2
    </td>
    <td align="center" id="price_item_2">
        £60.00
    </td>
    <td align="center" id="total_item_2">
        £60.00
    </td>
</tr>
<tr>
    <td colspan="3" align="right">
        <strong>Grand Total:</strong>
    </td>
    <td align="center" id="grandTotal">
    </td>
</tr>
</table>

<script type="text/javascript">


$("input[name^=qty_item_]").bind("keyup", recalc);


    $("[id^=total_item]").calc(
        "qty * price",
        {
            qty: $("input[name^=qty_item_]"),
            price: $("[id^=price_item_]")
        },
        function (s){
            return "£" + s.toFixed(2);
        },
        function ($this){
            var sum = $this.sum();

            $("#grandTotal").text(
                "£" + sum.toFixed(2)
            );
        }
    );


</script>


</body>
</html>

Что я делаю не так?

Ответы [ 2 ]

6 голосов
/ 17 ноября 2011

Хм, может быть, начать с JQuery?

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>

Вы не можете использовать jQuery без jQuery:))

Тогда вам также нужно включить плагин для расчета (скопируйте его в свою папку, не используйте хотлинк!)

<script src="http://www.pengoworks.com/workshop/jquery/calculation/jquery.calculation.js"></script>

Наконец твой скрипт:

$("input[name^=qty_item_]").bind("keyup", recalc);

function recalc() {
    $("[id^=total_item]").calc(
        "qty * price",
        {
            qty: $("input[name^=qty_item_]"),
            price: $("[id^=price_item_]")
        },
        function (s){
            return "£" + s.toFixed(2);
        },
        function ($this){
            var sum = $this.sum();

            $("#grandTotal").text(
                "£" + sum.toFixed(2)
            );
        }
    );
}

вы пропали без вести:

function recalc() {
}
2 голосов
/ 17 ноября 2011

Сначала вам нужно прочитать документацию по jquery и инструкции по использованию на веб-странице.

Вам нужно вызвать библиотеку jquery, что-то вроде этого (в конце вашего <body> или в <head>):

<script src="http://code.jquery.com/jquery-1.7.min.js"></script>

Затем вам нужно вызвать плагин jquery.calc (не забудьте сначала загрузить !!!). Наконец, вы должны получить что-то вроде этого (в конце вашего <body> или в <head>):

<script src="http://code.jquery.com/jquery-1.7.min.js"></script>
<script src="yourJsFolderPath/jquery.calculation.min.js"></script>

И только потом звоните:

<script type="text/javascript">

    $(document).ready(function(){ //In the documentation talk about of this 
                                  //but I recommend to you, use this function 
                                  //that make that all the things are inside 
                                  //are called at the "body onload".

        var recalc = function (){
            /*  do your stuff when a user "keyup" in a 
                input with a name with something
                like qty_item_
            */
        };

        $("input[name^=qty_item_]").bind("keyup", recalc);

        $("[id^=total_item]").calc(
            "qty * price",
            {
                qty: $("input[name^=qty_item_]"),
                price: $("[id^=price_item_]")
            },
            function (s){
                return "£" + s.toFixed(2);
            },
            function ($this){
                var sum = $this.sum();

                $("#grandTotal").text(
                    "£" + sum.toFixed(2)
                );
            }
        );
    });
    </script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...