我正在尝试编写一个jQuery函数,在单击单选按钮时更改小计。将有3个以上的单选按钮 - 每个按钮具有不同的价格值,将添加到现有的小计。
如果没有选择现有的单选按钮(这组单选按钮 - 具有相同的name
属性),仅希望更新小计。这就是我目前所拥有的:
HTML:
<input type="radio" value="45" name="timescale" onclick="changePrice(this)">
jQuery的:
function changePrice(t){
v = parseInt($(t).val());
s = $("#subtotal");
x = parseInt(s.text());
if($(t).siblings("input").is(":checked")){
s.text(x);
} else {
s.text(x + v);
}
}
我希望if语句检查是否选中了单选按钮的兄弟节点。如果是:仅将小计s.html()
替换为其当前值。如果不是:用更新的值(即当前值+单选按钮的值)替换s.html()
。但目前每次点击都会更新小计 - 即使已经选择了其他单选按钮。我哪里错了?
答案 0 :(得分:1)
修改强>
问题是change
事件的那一刻,已经有一个已检查的无线电(你不知道以前的状态)。您可以将此状态存储在辅助变量中,如下所示:
var $checked; //This is the aux var that saves previous state
$(document).ready(function(){
$checked = $(":radio[name='timescale']:checked");
});
function changePrice(t){
v = parseInt($(t).val());
s = $("#subtotal");
x = parseInt(s.text());
if($checked.size() > 0){
s.text(x);
} else {
s.text(x + v);
}
$checked = $(this);
}
希望这会有所帮助。干杯