【问题标题】:Total Of Radio Buttons单选按钮总数
【发布时间】:2023-04-11 08:20:01
【问题描述】:

好的,我现在有一个表单,可以让用户选择某些单选按钮,但如果选择了某些单选按钮,那么其他人不能。

我已经设置了JSFIDDLE,这样您就可以更轻松地看到这一点。我知道代码可能看起来有点乱。

我遇到的问题是在表单的底部有一个部分Order Total (excluding VAT):,它将单选按钮的总数加起来。问题是,例如,如果您选中左上角的单选按钮(25 英镑第 1 年所有块和单元(总共 15 个评估))然后在Order Total (excluding VAT): 部分,它在总框中显示 25 英镑。然后,如果您选中下面的单选按钮,即为 47.50 英镑,则总框显示为 47.50 英镑,这很好。但是然后说用户改变主意并返回 25 英镑的选项,它保留 47.50 英镑并在顶部添加 25 英镑,所以它说 72.50 英镑,而它应该只是 25 英镑。你可以看到单选按钮的价格是由data-price="25"设置的

所以我的问题是查看代码是否可以仅将选中的单选按钮相加?

我认为它与缓存先前选择的内容和此代码有关?

$('input:radio').change(function(){
    var total = 0.0;
    $('input:radio:checked').each(function(){
        total += parseFloat($(this).data('price'));
    });
    $('#total').val(total.toFixed(2));
});

【问题讨论】:

  • 我知道用户只能为每个“关键阶段”选择一个选项,因此您可以通过将每个关键阶段的所有单选按钮名称设置为相同来做到这一点。并且为了控制选择哪个选项,添加一个新属性而不是使用 name 属性。
  • @ocanal 那部分正在工作,它是单选按钮的总和。 It is caching them I think so when a new one is selected it adds it on it only needs to add the radio buttons which are selected.

标签: javascript jquery radio-button


【解决方案1】:

问题是执行顺序之一。

您已经使用 jQuery.on()、jQuery.click() 和 jQuery.change() 放置了三组事件处理程序。我不想猜测这些事件触发的顺序,而且顺序很可能因浏览器而异。

因此,求和处理程序可以在其他处理程序之前运行,这似乎正在发生。

为了安全起见,我将为所有单选按钮编写一个唯一的处理程序。内部分支以响应特定情况,然后最终运行求和循环。

【讨论】:

  • 我不是最擅长 jQuery 的你能帮帮我吗?
猜你喜欢
  • 2021-12-29
  • 2012-02-14
  • 1970-01-01
  • 2015-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-22
相关资源
最近更新 更多