如何使用jQuery计算单选按钮值的总和?

时间:2009-08-24 20:51:58

标签: javascript jquery html radio-button

我正在尝试创建一个包含许多包含许多单选按钮的组的表单。当用户选择一个按钮时,我想计算每个所选单选按钮值的总和,并向用户显示该总和。

我找到了一个jQuery的插件,它将进行计算,这个插件使用按钮的name属性来计算。例如,它将汇总名称为sum的所有按钮的值。

到目前为止,我已经尝试了两种设置方法:在第一种方法中,我为每个组创建一个隐藏字段以保存其中所选值的总和,此隐藏字段获取值但问题是当用户选择按钮时,总值不会更新。我的代码如下所示:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
        <title>Untitled Document</title>
        <script src="jquery.js" type="text/javascript">
        </script>
        <script src="calc.js" type="text/javascript">
        </script>
        <script src="calc_f.js" type="text/javascript">
        </script>
        <script type="text/javascript">
            function DisplayPrice(price){
                $('#spn_Price').val(price);
            }
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
            <input type="hidden" id="spn_Price" name="sum" value="">
            <br>
            <input id="rdo_1" type="radio" value="159" name="price" onclick="DisplayPrice(this.value);">
            <br>
            <input id="rdo_2" type="radio" value="259" name="price" onclick="DisplayPrice(this.value);">
            <br>
            <input type="text" name="totalSum" id="totalSum" value="" size="2" readonly="readonly">
        </form>
    </body>
</html>

在此代码中,名称为totalSum的输入标记是值将更新的位置,但更改按钮时不会更新。

正如我之前所说,我使用隐藏字段的原因是保存每个组的小计。它的名称为sum,它向插件指示应将其添加到其他人。

我不知道这是否是正确的方法,我试图在用户点击按钮时更改按钮的名称属性sum,但这也不起作用!

以下是插件地址:http://www.pengoworks.com/workshop/jquery/calculation/calculation.plugin.htm

我该怎么做?

2 个答案:

答案 0 :(得分:21)

插件schmugin。摆脱你的onclick并试试这个:

$("input[type=radio]").click(function() {
    var total = 0;
    $("input[type=radio]:checked").each(function() {
        total += parseFloat($(this).val());
    });

    $("#totalSum").val(total);
});

答案 1 :(得分:2)

                      无标题文件

    <script type="text/javascript">
        function DisplayPrice(price){
            var val1 = 0;
            for( i = 0; i < document.form1.price.length; i++ ){
                if( document.form1.price[i].checked == true ){
                    val1 = document.form1.price[i].value;
                }
            }

            var val2 = 0;
            for( i = 0; i < document.form2.price2.length; i++ ){
                if( document.form2.price2[i].checked == true ){
                    val2 = document.form2.price2[i].value;
                }
            }

            var sum=parseInt(val1) + parseInt(val2);
            document.getElementById('totalSum').value=sum;
        }
    </script>
</head>
<body>
    Choose a number:<br>
    <form name="form1" id="form1" runat="server">
        <br>
        <input id="rdo_1" type="radio" value="159" name="price" onclick="DisplayPrice(this.value);">159
        <br>
        <input id="rdo_2" type="radio" value="259" name="price" onclick="DisplayPrice(this.value);">259
        <br>
    </form>

    Choose another number:<br>
    <form name="form2" id="form2" runat="server">
        <br>
        <input id="rdo_1" type="radio" value="345" name="price2" onclick="DisplayPrice(this.value);">345
        <br>
        <input id="rdo_2" type="radio" value="87" name="price2" onclick="DisplayPrice(this.value);">87
        <br>
    </form>
    <input type="text" name="totalSum" id="totalSum" value="" size="2" readonly="readonly">


</body>

上面的代码将对两组中的检查值进行二进制求和。 parseInt将转换为整数。否则请使用parseFloat。