【问题标题】:Make calculations in checkboxes with Javascript使用 Javascript 在复选框中进行计算
【发布时间】:2014-09-12 11:59:13
【问题描述】:

我在 Twitter Bootstrap 中有一个复选框列表,格式如下:

<form method='post' class="form-horizontal" id="myform">
   <input type="checkbox" attr1="2" attr2="4" prodname="product1"> product1
   <input type="checkbox" attr1="5" attr2="1" prodname="product2"> product2
   <input type="checkbox" attr1="1" attr2="7" prodname="product3"> product3
   ....
   ....
   <button type="submit" class="btn btn-success pull-right">Calculate</button>
</form>

用户将选择部分产品(不是全部)并单击提交按钮以查看基于以下公式的结果:

finalvalue = sum_of_attr1/total_num_checked + 10*best_prod_attr1 - best_prod_attr2

这意味着我必须找到所有已选中复选框的 attr1 的总和以及选中了多少个,然后尝试每个选中的复选框以查看其中哪个会给出最大值。然后我会用最终值和最佳产品的prodname 更新一个div。

我不想在服务器端执行此操作,我想使用 Javascript/JQuery 进行尝试。有什么想法吗?

【问题讨论】:

  • 你说的 是什么意思"然后尝试每个复选框,看看哪个复选框会给出最大值"??
  • @TJ 如果您看到公式,best_prod 可能是复选框之一。我必须尝试每个选中的复选框,看看它们中的哪一个会在公式中给出最大的最终值。

标签: javascript jquery twitter-bootstrap


【解决方案1】:

对于“最佳”计算:请参阅这个 SO 问题:jQuery: How to calculate the maximal attribute value of all matched elements?

选中复选框的数量:How to count check-boxes using jQuery?

在评论后编辑并更好地表达预期行为:

var sumAttr1 = null;
var bestProductName = null;
var maxScorePart = null;

// Browse each checked input to get the sum of attr1 and get the best product
$('input:checkbox:checked').each(function() {
    var valueAttr1 = parseInt($(this).attr('attr1'));
    var valueAttr2 = parseInt($(this).attr('attr2'));

    // Cumulate attr1 for final calc
    sumAttr1 += valueAttr1;

    // Check best prod
    var currentScorePart = 10 * valueAttr1 - valueAttr2;
    if(currentScorePart > maxScorePart) {
        maxScorePart = currentScorePart;
        bestProductName = $(this).attr('prodname');
    }
});

var maxScore = sumAttr1 / $('input:checkbox:checked').length + maxScorePart;
alert('Best product = ' + bestProductName + '\r\nBest product score = ' + maxScore);

查看工作示例:http://jsfiddle.net/5whctawh/

【讨论】:

  • 我不想找到最大属性,而是可能给出最大finalValue的复选框。由于该公式同时使用了这两个属性,因此不一定是最大的就是最好的。
  • 好吧,这就是我编辑的意图......我想我们(至少 T J 和我)并不清楚:你想找到哪个产品(在检查的产品中?)具有最高finalValue 当我们在 finalValue 的公式中替换它的 attr 时?
  • 没错!带来不便敬请谅解。英语不是我的母语,很容易出错。
  • 那么我们必须检查每个产品还是每个检查的产品?
  • 是的。快写完了,我会提供一个jsfiddle来检查
猜你喜欢
  • 1970-01-01
  • 2014-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-17
  • 2021-10-07
  • 2020-01-03
  • 2018-03-27
相关资源
最近更新 更多