我正在尝试创建一个包含许多包含许多单选按钮的组的表单。当用户选择一个按钮时,我想计算每个所选单选按钮值的总和,并向用户显示该总和。
我找到了一个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
我该怎么做?
答案 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。