首页 > 解决方案 > 如果另一个功能处于活动状态,则启动一个功能并仅激活一些复选框 - JQuery

问题描述

我有一个功能,只有在之前激活了另一个功能时才想启动它。

我有一些 CheckBoxes,我需要对它的值求和以获得总数。

只有当用户选择了某些复选框时,它才必须激活另一个带有折扣的复选框。我希望在第一次选择后激活折扣复选框,因为如果我不这样做,我可能会得到负价格。

然后(如果可能的话)我希望禁用折扣复选框是用户取消选择所有以前的复选框。

这可能吗?

这是我的脚本。我是 JavaScript/jQuery 的超级新手,所以这可能是一个愚蠢的问题。

谢谢

$(document).on('change', getCheck);
  
  function getCheck() {
    var total= 0;
    $('[type="checkbox"]:checked').not("#discount").each(function(i, el) {
    //console.log($(this).not("#off").val());
    var SumVehicle = parseFloat($(el).val());
    total += SumVehicle;
    //console.log(total);
    //console.log(price_tot);
    $('#rata').text(total  +" €");

     var finalprice = total;
     //var Check = getCheck();
         
        if(typeof(total) != "undefined" && total !== 0) {
          $('[type="checkbox"]:checked').not(".sum").each(function(i, el) {
          var Discount = parseFloat($(this).val());
          finalprice = finalprice - Discount;
          console.log(finalprice);
          $('#rata').text(finalprice  +" €");
          });
        };
      });
    };
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input class="sum" type="checkbox" name="vehicle1" value="1000"> I have a bike<br>
<input class="sum" type="checkbox" name="vehicle2" value="2000"> I have a car<br>
<br><br><br>
<input id="discount" type="checkbox" name="discount" value="200"> Discount<br>

<div id="rata">rata</div>

标签: javascriptjqueryhtmlcheckbox

解决方案


用此代码替换您的 js 代码。错误将得到解决。

$( document ).ready(function() {
  $("input[type='checkbox']").on('change', getCheck);

  });
  function getCheck() {
    var total= 0;
    $('[type="checkbox"]:checked').not("#discount").each(function(i, el) {
    console.log($(this).not("#off").val());
    var SumVehicle = parseFloat($(el).val());
    total += SumVehicle;
    console.log(total);
    //console.log(price_tot);
    $('#rata').html(total  +" €");

     var finalprice = total;
     var Check = function getCheck(){

        if(typeof(Check) != "undefined" && Check !== null) {
          $("#discount").toggle(); 
          var Discount = parseFloat($(this).val());
          finalprice -= Discount;
          console.log(finalprice);
          $('#rata').text(finalprice  +" €");

        };
      };
    });
  };

推荐阅读