基于单选按钮选择的计算

Calculations based on radio button choices

我正在为我的 Web 项目使用 MEAN 堆栈。前端是一个简单的注册表单,需要多个用户输入。例如,它说 "how many products are you buying?" 下一个问题是单选按钮。它说这个产品是大的还是小的?我的问题如下:获得订单成本的计算是#products*42+(如果选择大则为 12)或#products*42+(如果选择小则为 0)。我如何在 javascript 中对此进行编码(我在后端使用节点)。换句话说,我如何告诉我的计算代码,当用户选择一个单选按钮时,您需要添加以下数字,以及如何将输入的产品数量传递给我的公式?我首先为小单选按钮选项分配 value=1,为大单选按钮选项分配 value=2。只是一个一般的例子会很有帮助,因为一旦我解决了这个问题,我就可以编写细节并更新公式。谢谢

为什么不使用 0 和 12 作为单选按钮的值,那么后端可以只添加所选的值?

如果您想在客户端进行计算并且元素采用 HTML 形式,例如:

<h1>Radio Buttons</h1>
<form name="catch-radio" method="post">
  <div class="input">
    <span class="label">How many products are you buying?</span>
    <input id="product-count" type="text" name="product_count" value="0"/>
    <br/>
    <span class="label">Is this product large or small?</span>
    <br/>
    <span class="label">Large</span>
    <input type="radio" name="product-size" value="12" checked="checked"/>
    <br/>
    <span class="label">Small</span>
    <input type="radio" name="product-size" value="0"/>
  </div>
</form>
<div>
  <h2>Cost of order:</h2>
  <p id="calculation"></p>
</div>

输入产品数量(id 为 'product-count')和对应产品尺寸的单选按钮(名为 'product-size'),您可以计算成本并将其输出到页面上的元素(id 为 'calculation'),通过向表单字段添加事件处理程序以注册表单中的更改,然后从这些处理程序调用函数来执行计算并相应地更新页面,例如所以:

// Cost is the count of products purchased multipled by 42 then added
// to 12 in the case that the product is large, and zero in the case
// that the product is small
function calculate_cost() {
    let count = parseInt(document.getElementById('product-count').value);
    if (count > 0) {
        let size = 0;
        for (var i = 0 ; i < document.getElementsByName('product-size').length; i++) {
            if (document.getElementsByName('product-size')[i].checked) {
                    size = parseInt( document.getElementsByName('product-size')[i].value);
                    break;
            }
        }

        let cost = count * 42 + size
        document.getElementById('calculation').innerHTML = cost;
    }
}

// handlers for form input change
// call calculate_cost() on change
// note that the text input is an on-change event but for radio buttons
// an onclick handler is needed for each button
for (var i = 0 ; i < document.getElementsByName('product-size').length; i++) {
    document.getElementsByName('product-size')[i].onclick = function() { 
        calculate_cost(); 
    }
}
document.getElementById('product-count').onchange = function() { 
    calculate_cost(); 
}

我在 CodePen 上放了一个快速演示:http://codepen.io/P1xt/pen/yOKqXP/

特别有趣的一点是,对于单选按钮,您需要为每个按钮单独添加一个点击处理程序(而且它必须是点击而不是更改处理程序,并且要弄清楚当前选择了哪个单选按钮,您需要明确检查每一个以查看它是否是 'checked'.

注意:如果您希望在服务器端进行计算,则需要提交表单,然后从提交的表单元素中收集产品数量和产品尺寸,以便执行计算。