亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

更改時重新計算選擇選項的總和

更改時重新計算選擇選項的總和

白板的微信 2023-10-30 20:35:47
我有這個選擇器,根據選項總和 ID 屬性和輸入編號計算選擇更改,問題是當我選擇選項 1 并增加輸入編號時工作得很好,但是當我選擇選項 2 或 3 并增加輸入編號時總和的計算再次混亂。當我選擇不同的選項時,如果進行了更改,我會嘗試將總價再次更改為選項 ID 中的價格。// Input number $('input[name=\'cantitate\']').on('change', function() {      var cant  = $('#cantitate').val();      var price = $(this).children(":selected").attr("id");    $('#total').text(price * cant + ' USD');  });// Select box $('#variantacurs').on('change', function() {       var cant  = $('#cantitate').val();       var price = $(this).children(":selected").attr("id");     $('#total').text(price * cant + ' USD');  });<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script><div id="total">60</div>  <select class="form-control" id="variantacurs" name="variantacurs">    <option value="">---SELECT---</option>     <option id="100" value="Option 1">Option 1</option>     <option id="210" value="Option 2">Option 2</option>     <option id="300" value="Option 3">Option 3</option>  </select> <input type="number" name="cantitate" id="cantitate" placeholder="1" min="1" value="1" >
查看完整描述

2 回答

?
蝴蝶不菲

TA貢獻1810條經驗 獲得超4個贊

這段代碼有很多問題:

  1. 標簽id不是存儲值的好方法。值可以存儲在value屬性本身中,而標簽是<option>元素的實際內容。這也使得檢索值變得更加容易。

  2. 您可以只定義一個函數(例如calc()在我的示例中),并分配它對onchange輸入的引用,而不是重復代碼。

  3. 使用 將Number()輸入的字符串轉換val()為正確的數字。

例子:

// Input number

$('input[name=\'cantitate\']').on('change', calc);

$('#variantacurs').on('change', calc);


function calc() {

      var cant = Number($('#cantitate').val());

      var price = Number($('#variantacurs').val());

      $('#total').text(cant * price + ' USD');

}

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div id="total">60</div>


<select class="form-control" id="variantacurs" name="variantacurs">

  <option value="60" disabled selected>---SELECT---</option>

  <option value="100">Option 1</option>

  <option value="210">Option 2"</option>

  <option value="300">Option 3"</option>

</select>


<input type="number" name="cantitate" id="cantitate" placeholder="1" min="1" value="1">


查看完整回答
反對 回復 2023-10-30
?
狐的傳說

TA貢獻1804條經驗 獲得超3個贊

拼寫錯誤,使用 .form-control 選擇輸入/選擇值。


$(".form-control").children(":selected")


$("input[name='cantitate']").on("change", function () {

  var cant = $("#cantitate").val();

  var price = $(".form-control").children(":selected").attr("id");

  console.log(price)

  $("#total").text(price * cant + " USD");

});

我建議不要使用 id 作為值,而使用 value 作為值??梢园慈缦路绞竭M行一些清潔。


(function ($) {

  // Input number

  const input = $("input[name='cantitate']");

  const select = $(".form-control");

  input.on("change", function () {

    calculate($(this).val(), select.children(":selected").val());

  });

  // Select box

  select.on("change", function () {

    calculate(input.val(), $(this).val());

  });

  function calculate(input, selected) {

    var cant = Number(input);

    var price = Number(selected);

    $("#total").text(`Total: ${price * cant + " USD"}`);

  }

})($);

.as-console {

  min-height: 100% !important;

}


.as-console-row {

  color: blue !important;

}

<div id="total">Total: 0</div>

    <select class="form-control" id="variantacurs" name="variantacurs">

        <option value="">---SELECT---</option>

        <option value="100">Option 1</option>

        <option value="200">Option 2</option>

        <option value="300">Option 3</option>

    </select>

    <input type="number" name="cantitate" placeholder="1" min="1" value="1">

    <script

    src="https://code.jquery.com/jquery-3.4.1.min.js"

    integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo="

    crossorigin="anonymous"></script>


查看完整回答
反對 回復 2023-10-30
  • 2 回答
  • 0 關注
  • 130 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號