基于Radio Button Click的jQuery Autocalculate

时间:2011-04-12 15:59:16

标签: php javascript jquery

我被困在我正在处理的这个jQuery自动计算脚本的最后一部分。我想基于“单选按钮单击”自动重新计算小计值。单击单选按钮“special_(n)”时,计算将自动添加10%的折扣。

查看此处的脚本:http://www.ppleasysavings.com/calcscript/index.html (提示):在'qty'字段中输入一个值,总计将自动计算。

这是HTML'部分'

Yes<input name="special_1" type="radio" value="1" />
No<input name="special_1" type="radio" value="0" />
<input name="total_item_1" type="text" id="total_item_1" style="text-align:right;" value="$0.00" size="7" maxlength="8" readonly="readonly">

Yes<input name="special_2" type="radio" value="1" />
No<input name="special_2" type="radio" value="0" />
<input name="total_item_2" type="text" id="total_item_2" style="text-align:right;" value="$0.00" size="7" maxlength="8" readonly="readonly">

这是jQuery

正如你所看到的,我已经添加了一些代码来包含特殊的“单选按钮”,并开始使用等式=&gt;数量*价格*特价。现在,我需要对其进行修改以使其有效。

var bIsFirebugReady = (!!window.console && !!window.console.log);
$(document).ready(
    function (){
        // update the plug-in version
        $("#idPluginVersion").text($.Calculation.version);

    // bind the recalc function to the quantity fields
        $("input[name^=qty_item_]").bind("keyup", recalc);
        $("input[name^=special_]").bind("checked", recalc);
        // run the calculation function now
        recalc();
    }
);  
function recalc(){
    $("[id^=total_item]").calc(
        // the equation to use for the calculation
        "qty * price * special",
        // define the variables used in the equation, these can be a jQuery object
        {
            qty: $("input[name^=qty_item_]"),
            price: $("[id^=price_item_]"),
            special: $("input[name^=special_]")
        },
        // define the formatting callback, the results of the calculation are passed to this function
        function (s){
            // return the number as a dollar amount
            return "$" + s.toFixed(2);
        },
        // define the finish callback, this runs after the calculation has been complete
        function ($this){
            // sum the total of the $("[id^=total_item]") selector
            var sum = $this.sum();

            $("#grandTotal").val(
                // round the results to 2 digits
                "$" + sum.toFixed(2)
            );
        }
    );
}

2 个答案:

答案 0 :(得分:1)

尝试这个以获得用于计算的单选按钮的值:

special: $("input[name^=special_]:checked").val(),

但是在我的情况下,只有special_1单选按钮才能使用点击,下一个special_2不会触发任何内容,仍然可以解决原因。

答案 1 :(得分:0)

$("input[name^=special_]").change(recalc);

此外,似乎您的“特殊”输入项的值为0和1,而不是0或.9(10%的折扣)。将无线电的值设置为这些值,然后在计算中使用它。

编辑:我一直在看它,我已经决定我不喜欢你使用计算插件。在我看来,通过正常功能可以实现更清洁。你进一步使你的循环和实际计算变得复杂......