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

4

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

我找到了一个jQuery插件来进行计算,该插件使用按钮的名称属性进行计算。例如,它将对所有名称为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个回答

21

插件没用,不要使用onclick,试试这个:

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

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

3
在学习框架之前,学习一门语言的基本概念非常重要。在解决特定问题时,没有理由引入插件。 - Mark Hurd
如何在 $("input[type=radio]").click(function() { 中指定表单名称,以便仅选择特定表单中的单选按钮而不是页面上所有的单选按钮? - Sapphire

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。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接