简体   繁体   English

为下拉菜单分配多个值

[英]Assign multiple values to dropdown option

I'm wanting to assign multiple values to one dropdown selection which are then summed in a text field. 我想将多个值分配给一个下拉选择,然后将它们加到一个文本字段中。

So for example, I might have three drop-down items: Appetizer, Entree, Side. 因此,例如,我可能有三个下拉项:开胃菜,主菜,西德。 I might have two resulting fields: Calories and Cost. 我可能会有两个结果字段:卡路里和成本。 This means that if someone selects "Salad" from the appetizer dropdown, "Salad" needs to have both a cost and calorie value associated with it. 这意味着,如果有人从开胃菜下拉菜单中选择“沙拉”,则“沙拉”需要同时具有成本和卡路里值。 Said value will also need to sum whatever the calorie and cost values from the entree and side dropdowns are. 所述值还需要对来自主菜和侧边下拉菜单的所有卡路里和成本值求和。

Per another answer on the site, I started out with the following code to sum values from multiple dropdowns: http://jsfiddle.net/sf1hwp2y/ 在网站上的另一个答案中,我从以下代码开始,对多个下拉列表中的值求和: http : //jsfiddle.net/sf1hwp2y/

HTML: HTML:

<select name='anch1'>
 <option value='0'>Appetizer</option>
 <option value='20'>Option 1</option>
 <option value='30'>Option 2</option>
 <option value='40'>Option 3</option>
</select>

<select name='anch2'>
 <option value='0'>Entree</option>
 <option value='20'>Option 1</option>
 <option value='30'>Option 2</option>
 <option value='40'>Option 3</option>
</select>

<select name='anch3'>
 <option value='0'>Side</option>
 <option value='20'>Option 1</option>
 <option value='30'>Option 2</option>
 <option value='40'>Option 3</option>
</select>

<div id='sum'>Calorie Total</div>

Javascript + JQuery: Javascript + JQuery:

$('select').change(function(){
    var sum = 0;
    $('select :selected').each(function() {
        sum += Number($(this).val());
    });
     $("#sum").html(sum);
});

I am unsure how to also assign prices or other attributes to the dropdown selections. 我不确定如何将价格或其他属性分配给下拉菜单。 Any ideas? 有任何想法吗?

You can probably use data- attributes on the 您可能可以在

Something like this: 像这样:

<select name="anch1">
    <option value="0">Appetizer</option>
    <option value="20" data-cost="5">Option 1</option>
    <option value="30" data-cost="10">Option 2</option>
    <option value="40" data-cost="20">Option 3</option>
    <option value="50" data-cost="50">Option 4</option>
</select>

Then, with your JS: 然后,使用您的JS:

$('select').on('change', function(){
    var sum = 0;
    var cost = 0;

    $('select :selected').each(function() {
        sum += Number($(this).val());
        cost += Number($(this).data('cost'));
    });
    $('#sum').html(sum);
    $('#cost').html(cost);
});

You can put multiple values separated by a delimiter, then use .split() to split it up. 您可以将多个值分隔成一个定界符,然后使用.split()将其拆分。

<select name='anch1'>
 <option value='0,0'>Appetizer</option>
 <option value='20,10.0'>Option 1</option>
 <option value='30,5.99'>Option 2</option>
 <option value='40,3.50'>Option 3</option>
</select>
$('select').change(function(){
    var total_calories = 0;
    var total_price = 0;
    $('select').each(function() {
        let [calories, price] = $(this).val().split(",");
        total_calories += parseInt(calories);
        total_price += parseFloat(price);
    });
    $("#calories").text(total_calories);
    $("#price").text(total_price);
});

只需添加选项属性,例如data-price='123' ,然后使用$(this).attr('data-price')进行检索

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM