【问题标题】:how to add price in cart from dropdown如何从下拉列表中在购物车中添加价格
【发布时间】:2020-07-18 11:17:48
【问题描述】:

我想在点击其中一个时添加价格

<div class="col-12 col-sm-9 col-md-9 col-lg-8">
                            <select class="form-control" type="text" value="">
                              <option value="0">Not Required</option>
                              <option value="50">Before Care only(6am to 9am)</option>
                              <option value="60">After Care Only (5pm to 7pm)</option>
                              <option value="110">Both</option>
                              </select>
                          </div>

应该将其添加到购物车中

 <h4 class="price" id="prictot">{{$cdetail ->c_price}}</h4>

         <form action="{{ route('/payment') }}" id="theForm" method="POST">
          @csrf
          <input type="hidden" id="price" name="price" value="{{$cdetail ->price}}"><br>
          <button type="submit" class="btn radius-xl text-uppercase">Buy This Courses</button>
         </form>

使用ajax获取价值并放入“prictot”

<script>
$(document).ready(function() {
$("#priceadd").on('change', function () {
    var optionText = $("#priceadd option:selected").val();
     realprice=document.getElementById("prictot").innerHTML
    document.getElementById("prictot").innerHTML = optionText 
});
});
</script>

【问题讨论】:

  • &lt;h4&gt; 内部已经存在的价格设为 10,然后如果用户选择 Before Care only(6am to 9am),那么这将总计为:10 +50 = 60 但如果用户再次将选择更改为 After Care Only (5pm to 7pm)然后价格将从h4 (60) 中获取并添加总计,或者之前的总计 (10) 应获取并添加新的选择价格?
  • 请添加你的答案,我会混淆先生
  • 我得到这样的值,但不知道为什么不将它们相加..

标签: php ajax laravel cart


【解决方案1】:

您可以简单地获取 select-box&lt;h4&gt; 的值并将它们相加,然后将总值添加到您的 div 和隐藏的输入中。即:

$(document).ready(function() {
//on change of slect
  $("#priceadd").on('change', function() {
  //get select value
    var optionText = parseInt($(this).val());
    //get text inside h4
    var realprice = parseInt($("#prictot").text());
    //add 
    var total =optionText +  realprice;
    //add total to div nd inputs
    $("#prictot").text(total)
    $("#price").val(total)
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="col-12 col-sm-9 col-md-9 col-lg-8">
  <select class="form-control" id="priceadd">
    <option value="0">Not Required</option>
    <option value="50">Before Care only(6am to 9am)</option>
    <option value="60">After Care Only (5pm to 7pm)</option>
    <option value="110">Both</option>
  </select>
</div>
<h4 class="price" id="prictot">110</h4>

<form action="{{ route('/payment') }}" id="theForm" method="POST">
  @csrf
  <input type="text" id="price" name="price" value="110"><br>
  <button type="submit" class="btn radius-xl text-uppercase">Buy This Courses</button>
</form>

如果您需要在其值更改之前获取已存在于&lt;h4&gt; 中的总数,您可以将自定义属性添加到&lt;h4&gt; 标记,该属性将具有先前的值。即:

$(document).ready(function() {
//on change of slect
  $("#priceadd").on('change', function() {
    //get old value
    var old_value = parseInt($("#prictot").attr('total-price'))
  //get select value
    var optionText = parseInt($(this).val());
    
    //add 
    var total =optionText +  old_value;
    //add total to div nd inputs
    $("#prictot").text(total)
    $("#price").val(total)
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="col-12 col-sm-9 col-md-9 col-lg-8">
  <select class="form-control" id="priceadd">
    <option value="0">Not Required</option>
    <option value="50">Before Care only(6am to 9am)</option>
    <option value="60">After Care Only (5pm to 7pm)</option>
    <option value="110">Both</option>
  </select>
</div>
<!--added custom attribute-->
<h4 class="price" total-price="110" id="prictot">110</h4>

<form action="{{ route('/payment') }}" id="theForm" method="POST">
  @csrf
  <input type="text" id="price" name="price" value="110"><br>
  <button type="submit" class="btn radius-xl text-uppercase">Buy This Courses</button>
</form>

【讨论】:

  • 110

    它来自最后一页,带有这样的项目

    {{$cdetail ->c_price}}

    .. 所以现在当我在其中添加下拉菜单时,每当我点击下拉菜单时,它都会一次又一次地求和
  • 那你想要什么?你能详细说明一下吗?
  • 在下拉菜单中有3个选项,因此用户可以选择其中一个,并且应该总共添加价格。,从下拉列表中总共只能添加一个选项价格,并且只能添加一次
  • 所以你需要禁用选择框?用户从中选择任何值后?
  • 表示如果用户从下拉列表中选择一项,则仅添加该价格,之后他想选择其他的,则旧的将不会继续添加。每次用户更改时都会添加新价格或选择..
【解决方案2】:

您从 laravel 获得的价格可能不需要使用隐藏输入。您可以将该值直接插入刀片模板中的 js 代码中。请参阅下面的解决方案。

$("#priceadd").on('change', function () {
    let price = 100 // this is only for stackoverflow
    // in your project you do
    // let price = {{$cdetail->price}}
    let optionPrice = parseInt($("#priceadd option:selected").val())
    document.getElementById("prictot").innerHTML = optionPrice + price
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<h4 class="price" id="prictot">Nothing selected</h4>
<select class="form-control" type="text" value="" id="priceadd">
  <option value="0">Not Required</option>
  <option value="50">Before Care only(6am to 9am)</option>
  <option value="60">After Care Only (5pm to 7pm)</option>
  <option value="110">Both</option>
</select>

【讨论】:

  • 我怎样才能将此下拉价格添加到总价中......这里" " 并在此处显示价格"

    {{$cdetail ->c_price}}

    "
  • 查看更新,我认为您根本不需要隐藏输入。在您的项目中,您使用最后一行注释: let price = {{$cdetail->price}}
  • 在最后一页附带的

    中已经有固定价格,而不是当点击下拉价格时应该添加该

    。意味着如果用户选择第一个下拉价格应该是 110(

    )+60(下拉)

  • document.getElementById("prictot").innerHTML = optionPrice + price 它只显示价格,就像 60(dropvalue) 和 100(realprice(h4))
  • 这就是为什么在您的刀片模板中,您在价格变量中放入与 h4 中相同的值。有了这个:让 price = {{$cdetail ->c_price}}
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-09
  • 1970-01-01
相关资源
最近更新 更多