Javascript 复选框将另一个表中的值添加到价格中

标签 javascript php jquery laravel

有人可以帮我解决这个问题吗?我有一个输入价格值,当您选择不同的复选框时,该值会发生变化,但它不会相加。 我真的不知道如何解决这个问题,如果您选择某项,它会增加总价格,而当您选择另一项时,它会再次增加。

foreach 是从 Extra 表中获取所有 exa_names 以及该项目的复选框和价格。

Javascript

$(document).ready(function(){
    $(".option").change(function(){
        var id = $(this).attr('id');
        console.log(id);

        var id_number = id.split("_")[1];
        console.log(id_number);

        var hidden_input = $(".option_price" + id_number).val();
        console.log(hidden_input);
    })
});

HTML

<label>Options</label><br>
@foreach($options as $option)   
    <div>                       
        <input type="checkbox" class="option" id="option_{{ $option->exa_id }}" name="option_{{ $option->exa_id }}" value="{{ $option->exa_id }}" {{ isset($cache) ? (isset($cache['option_' . $option->exa_id]) ? 'checked' : '')  : (old() ? (old('option_' . $option->exa_id) ? 'checked' : '') : ($inschrijving ? (in_array($registration->exa_id, $registration_options) ? 'checked' : '') : '')) }} >
        <input type="hidden" value="{{ $option->exa_price}}" class="option_price_{{ $option->exa_id }}">
        <label>{{ $option->exa_name }}</label>
        <label>  €{{ $option->exa_price }} </label> 
    </div>
@endforeach 

Html 输入totalprice(必须显示总价)

<div class="row">
            <div class="col-xs-12">
                <div class="form-group">
                    <label>Total</label>
                    <input type="text" name="totalprice" id="totalprice" class="form-control" data-blocked="<>{}" value="0" required>
                </div>
            </div>
        </div>

注册 Controller

$options_ids_array = array();
$options = Extra::all();
foreach($options as $option){
    $option->exa_id = "option_" . $option->exa_id;
    $input_option = $option->exa_id;
    if(!is_null($input_option)){
        $options_ids_array[] = $input_option;
    }
}

$registration->dev_option_id = implode(",", $options_ids_array);
$registration->save();

最佳答案

我认为最好将商品的价格存储在 javascript 变量中(因为它可以防止更改隐藏输入的值并在 js 端轻松访问)并通过复选框值访问您的价格(因为它是正是您尝试通过 id 值通过 _ 字符分割来获取的 id)。要从选中的复选框添加价格(如果它们不是太多复选框),请创建一个检查函数来检测选中了哪些复选框,然后选择每个复选框的价格并将它们相互添加,然后将其放入您的价格位置。像这样的东西:

var options = $(".option");
var options_price = ['your', 'price', 'values', 'according', 'to', 'options', 'id'];
function optionsPrice() {
    var total_price = 0;
    options.each(function () {
        var option = $(this);
        if (option.is(':checked') && option.val() != '' && $.inArray(option.val(), Object.keys(options_price))) {
                total_price += options_price[option.val()];
        }
    });

    return total_price;
}

在任何复选框更改时调用optionsPrice函数。

或者,如果您的页面上有很多复选框,

您可以拥有一个全局总价变量,并在任何复选框更改时从中添加或减去价格。像这样的东西:

var total_price = 0;
        var options = $(".option");
        var options_price = ['your', 'price', 'values', 'according', 'to', 'options', 'id'];

var option, val;
options.on('change', function() {
    option = $(this);
    val = option.val();
    if(val && val != '' && $.inArray(val, Object.keys(options_price)) !== -1) {
        if(option.is(':checked')) {
            total_price += options_price[option.val()];
        } else {
            if(total_price > 0) {
                total_price -= options_price[option.val()];
            } else {
                total_price = 0;
            }
        }
    }
});

希望对你有帮助:)

关于Javascript 复选框将另一个表中的值添加到价格中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58524988/

相关文章:

php - 如何修复 PHP 警告 : PHP Startup: Unable to load dynamic library 'php_ffmpeg.dll'

javascript - 在本身具有异步函数的另一个函数之后调用一个函数

javascript - 在部分不可见/事件时隐藏 iFrame

javascript - (Javascript)我需要创建一个函数,该函数需要 180 + 用户输入的数字\3 然后四舍五入到小时和分钟

PHP XPath 检查是否为空

php - 未捕获的反射异常 : Class log does not exist Laravel 5. 2

javascript - 在没有 $scope 的情况下使用 $watch( Controller 作为语法)

javascript - Google map 上的自定义路线/路径/道路

php - 从本地主机提交表单到(自己的)服务器

javascript - 我如何在 Jquery 中使用 "find"?