2009-08-24 90 views
4

我想创建一个包含许多单选按钮的组。当用户选择一个按钮时,我想计算每个选定的单选按钮值的总和并将该总和显示给用户。如何计算使用jQuery的单选按钮值的总和?

我已经找到了一个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

我怎样才能做到这一点?

回答

21

Plugin schmugin。摆脱你的onclick和尝试这个办法:

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

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

+1。这就是为什么在学习框架之前学习一门语言的基础知识是很重要的。根本没有理由把一个插件带入这个特殊的问题。 – 2009-08-24 21:07:40

+0

谢谢,但它不工作! – datisdesign 2009-08-24 21:24:55

+1

对不起,它的工作,我的坏! :) – datisdesign 2009-08-24 21:30:55

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> 

上面的代码将dinamically来自这两个组的总结检查的值。 parseInt将转换为整数。否则使用parseFloat。

+0

为我工作,感谢和好工作 – 2014-08-07 11:26:36