Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Jquery/Javascript从select下拉列表中拆分文本以用于乘法_Javascript_Jquery - Fatal编程技术网

如何使用Jquery/Javascript从select下拉列表中拆分文本以用于乘法

如何使用Jquery/Javascript从select下拉列表中拆分文本以用于乘法,javascript,jquery,Javascript,Jquery,我有一个选择下拉列表来选择产品尺寸,它还告诉您每个尺寸的价格 我想显示总成本以及它将覆盖多少公顷。1公斤=1公顷 该值是大小的ID,在添加到购物车时使用 <select class="productChoice"> <option value="">-- Please select --</option> <option value="2317474">1KG $180</option> <option v

我有一个选择下拉列表来选择产品尺寸,它还告诉您每个尺寸的价格

我想显示总成本以及它将覆盖多少公顷。1公斤=1公顷

该值是大小的ID,在添加到购物车时使用

<select class="productChoice">
    <option value="">-- Please select --</option>
    <option value="2317474">1KG $180</option>
    <option value="2317475">5KG $100</option>
    <option value="2317476">10KG $200</option>
    <option value="2317477">50KG $900</option>
</select>

<input type="text" id="Units_5183442" class="productTextInput" value="0">

<label id="hectares_5183442"></label> Hectares
<label id="total_5183442"></label>

下面是使用
split()提取值的一种方法

大概是这样的:

var calcResult = function() {

    var oSel = jQuery('.productChoice option:selected'),
        sText = oSel.text(),
        aData = sText.split(' '),
        mass = 0,
        price = 0,
        num = parseInt(jQuery('#Units_5183442').value());

    if( (aData.length > 1) && (aData[0] != '--') ) {
        mass = parseInt(aData[0]);
        price = parseInt(aData[1]);
    }

    jQuery('#total_5183442').text(num * price);
    jQuery('#hectares_5183442').text(num * mass);

};

jQuery('.productChoice').on('change', calcResult);
jQuery('#Units_5183442').on('change', calcResult);

这将更新公顷和总成本标签:

$(function() {
    $('.productChoice').change(function() {

        if($('#Units_5183442').val() == 0)  // min 1
            $('#Units_5183442').val(1);

        var selectedText = $(this).find('option:selected').text(); 
        var match = selectedText.match(/\d{1,3}KG/g);
        if(match.length == 1)
        {
            var kg = parseInt(match[0].replace('KG',''));
            var costMatch = selectedText.match(/\$\d{1,3}/g);
            if(costMatch.length == 1)
            {
               var cost = parseInt(costMatch[0].replace('$',''));
               var quantity = parseInt($('#Units_5183442').val());  // presume you can only order integer quantities?

               $('#hectares_5183442').text(kg * quantity);
                $('#total_5183442').text('Total cost: $' + cost * quantity)
            }
        }
    });

    $('#Units_5183442').keyup(function() {
        $('.productChoice').trigger('change');
    });
});
JS Fiddle here:

或此

var txt = '1KG $100';//assuming you've finally got and have validated this string
vals = txt.split('KG $');

var dollars = vals[1];
var size = vals[0]

还可以为产品创建对象,然后将其用于计算

var products = {
        '2317474':{
            qt:1,
            price:180
        }
    };
然后按产品id访问它,如

var prod = products[id];

你正在使用的JS代码在哪里?是的,这会有所帮助,如果必要的话,我的badI可以用我自己的替换自动生成的标记-但是当后端的价格或大小发生变化时,这确实需要更多的编辑,所以这不是最好的。
var products = {
        '2317474':{
            qt:1,
            price:180
        }
    };
var prod = products[id];