第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在 jquery 中使用復(fù)選框作為按鈕自動(dòng)計(jì)算總數(shù)?

在 jquery 中使用復(fù)選框作為按鈕自動(dòng)計(jì)算總數(shù)?

瀟瀟雨雨 2023-08-05 20:44:22
我有一個(gè)食物菜單表格,但我在處理帶有復(fù)選框的部分時(shí)遇到了問(wèn)題。我想讓表單變得更好,所以我將復(fù)選框設(shè)置為按鈕,這樣當(dāng)單擊時(shí)該框就會(huì)被選中。這工作正常,但問(wèn)題是當(dāng)我從一個(gè)復(fù)選框移動(dòng)到另一個(gè)復(fù)選框而不取消選中第一個(gè)復(fù)選框時(shí)。它不會(huì)從我的總額中減去金額。我使用了以下 jQuery 腳本:$('.drinks').on('change', function() {  $('.drinks').not(this).prop('checked', false);  });從一個(gè)復(fù)選框自動(dòng)切換到下一個(gè)復(fù)選框,該復(fù)選框以圖形方式顯示,但在我的控制臺(tái)中,它實(shí)際上并沒(méi)有取消選中其他框。$(document).ready(function(){   console.log("Jquery DOM ready.");     let totalprice="200";     $('#pricedisplay').html("$" + totalprice);     $('input[name=drink-one]').change(function(){        console.log("an input just changed.");        $('input[name=drink-one]:checked').each(function(){           let oneAddon = this.value;           console.log(this.value);           totalprice = parseFloat(totalprice) + parseFloat(oneAddon);           console.log(totalprice);        });        $('input[name=drink-one]:not(:checked)').each(function (){           let oneAddon = this.value;           console.log(this.value);           totalprice = parseFloat(totalprice) - parseFloat(oneAddon);           console.log(totalprice);        });        $('#pricedisplay').html("$" + totalprice)     });     $('input[name=drink-two]').change(function(){        console.log("an input just changed.");        $('input[name=drink-two]:checked').each(function(){           let twoAddon = this.value;           console.log(this.value);           totalprice = parseFloat(totalprice) + parseFloat(twoAddon);           console.log(totalprice);        });當(dāng)我單擊按鈕時(shí),總價(jià)會(huì)正確添加。如果我單擊同一個(gè)按鈕,它會(huì)正確減去。如果我在取消單擊上一個(gè)按鈕之前單擊另一個(gè)按鈕,則整個(gè)事情會(huì)中斷并不斷添加,因?yàn)槟鸁o(wú)法返回到之前單擊的另一個(gè)按鈕以撤消其值。我需要幫助才能使該函數(shù)執(zhí)行以下操作:如果用戶不需要任何額外的飲料,價(jià)格保持不變。如果用戶選擇“喝一杯”,價(jià)格就會(huì)上漲 5。如果用戶再次點(diǎn)擊“喝一個(gè)”按鈕,價(jià)格就會(huì)下降 5。如果用戶點(diǎn)擊“喝一個(gè)”按鈕,然后立即點(diǎn)擊“喝兩個(gè)”按鈕,價(jià)格只會(huì)加上“喝兩個(gè)”值并減去“喝一個(gè)”值?!昂热钡纫彩侨绱恕R淮沃荒苓x中一個(gè)按鈕,或者一次不能選中任何按鈕。我嘗試包含不同步驟的控制臺(tái)日志以幫助調(diào)試。
查看完整描述

1 回答

?
HUWWW

TA貢獻(xiàn)1874條經(jīng)驗(yàn) 獲得超12個(gè)贊

該問(wèn)題涉及以編程方式取消檢查輸入而不引發(fā)change事件。

說(shuō)明:change事件僅在“當(dāng)用戶通過(guò)單擊或使用鍵盤提交對(duì)元素值的更改時(shí)”觸發(fā),并且“不一定在每次對(duì)元素值的更改時(shí)觸發(fā)”

對(duì)于您的情況:?選中一個(gè)選項(xiàng)后,我們希望取消選中其他選項(xiàng)。我們想要添加選中選項(xiàng)的價(jià)格并減去未選中選項(xiàng)的價(jià)格。然而:

  1. 為了減去未選中的選項(xiàng),我們需要觸發(fā)該change事件。

  2. 我們只想在選中某個(gè)選項(xiàng)時(shí)取消選中其他選項(xiàng)。
    我們不想取消選中某個(gè)選項(xiàng)時(shí)取消選中其他選項(xiàng)。

  3. 我們只想減去從checked 變?yōu)閡nchecked 的選項(xiàng)。
    我們不想減去已經(jīng)未選中的選項(xiàng)。

所以,而不是這個(gè):

$('.drinks').on('change', function() {

? $('.drinks').not(this).prop('checked', false);

});

我們可以使用這個(gè):


$('.drinks').on('change', function() {

? if (this.checked) {

? ? $('.drinks:checked').not(this).prop('checked', false).trigger('change');

? }

}

下面,我合并了一些重復(fù)的代碼,試圖使事情盡可能干燥?,F(xiàn)在,每個(gè)選項(xiàng)都有相同的名稱“drink”,并且單個(gè)處理程序綁定到所有選項(xiàng)。


示范:


$(function() {


? const $priceDisplay = $('#pricedisplay');

? const $drinks = $('.drinks');

? let totalprice = 200;


? $priceDisplay.html("$" + totalprice);


? $drinks.on('change', function() {


? ? // if changed input is checked ...

? ? if (this.checked) {

? ? ? // for all checked except this, uncheck and trigger "change" event

? ? ? $drinks.filter(':checked').not(this).prop('checked', false).trigger('change');

? ? }


? ? // add or subtract price depending on checked state

? ? totalprice = this.checked

? ? ? ? totalprice + parseFloat(this.value)

? ? ? : totalprice - parseFloat(this.value);


? ? // update display

? ? $priceDisplay.html("$" + totalprice);


? });


});

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

<!DOCTYPE html>


<div class="chks">

? <div id="ck-button-one">

? ? <label>

? ? ? <input class="drinks" type="checkbox" name="drink" value="5">

? ? ? <span>One</span>

? ? </label>

? </div>

? <div id="ck-button-two">

? ? <label>

? ? ? <input class="drinks" type="checkbox" name="drink" value="10">

? ? ? <span>Two</span>

? ? </label>

? </div>

? <div id="ck-button-three">

? ? <label>

? ? ? <input class="drinks" type="checkbox" name="drink" value="20">

? ? ? <span>Three</span>

? ? </label>

? </div>

</div>

<div class="price">Purchase Price:

? <span id="pricedisplay"></span>

</div>

替代方法

不要考慮在浮動(dòng)價(jià)格中添加和減去,而是考慮僅將選定的選項(xiàng)添加到固定基本價(jià)格中。每次飲料選項(xiàng)發(fā)生變化時(shí),通過(guò)增加所選選項(xiàng)的基本價(jià)格來(lái)重新計(jì)算總價(jià)。


當(dāng)飲料選項(xiàng)發(fā)生變化時(shí),所選飲料的價(jià)格將添加到基本價(jià)格中。

如果未選擇任何飲品,則基本價(jià)格不會(huì)添加任何內(nèi)容。


$(function() {


? const basePrice = "200";

? const $priceDisplay = $('#pricedisplay');

? const $drinks = $('.drinks');


? $priceDisplay.html("$" + basePrice);


? $drinks.on('change', function() {


? ? let newPrice = parseFloat(basePrice);


? ? $drinks.not(this).prop('checked', false);


? ? $drinks.filter(':checked').each(function() {

? ? ? newPrice += parseFloat(this.value);

? ? });


? ? $priceDisplay.html("$" + newPrice);


? });


});

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


<div class="chks">

? <div id="ck-button-one">

? ? <label>

? ? ? <input class="drinks" type="checkbox" name="drink" value="5">

? ? ? <span>One</span>

? ? </label>

? </div>

? <div id="ck-button-two">

? ? <label>

? ? ? <input class="drinks" type="checkbox" name="drink" value="10">

? ? ? <span>Two</span>

? ? </label>

? </div>

? <div id="ck-button-three">

? ? <label>

? ? ? <input class="drinks" type="checkbox" name="drink" value="20">

? ? ? <span>Three</span>

? ? </label>

? </div>

</div>

<div class="price">Purchase Price:

? <span id="pricedisplay"></span>

</div>

通過(guò)稍微不同的結(jié)構(gòu),這個(gè)概念可以擴(kuò)展到處理多個(gè)選項(xiàng)組:


$(function() {


? const basePrice = "200";

? const $priceDisplay = $('#pricedisplay');

? const $options = $('.option');


? $priceDisplay.html("$" + basePrice);


? $options.on('change', function() {


? ? // define new price from base price

? ? let newPrice = parseFloat(basePrice);


? ? // uncheck other options in this group

? ? let $thisGroupOpts = $options.filter('[name=' + this.name + ']');

? ? $thisGroupOpts.not(this).prop('checked', false);


? ? // add prices for all checked options

? ? $options.filter(':checked').each(function() {

? ? ? newPrice += parseFloat(this.value);

? ? });


? ? // display total price

? ? $priceDisplay.html("$" + newPrice);


? });


});

.optionsPane {

? display: flex;

? flex-direction: row;

? margin: 0 0 2em;

}


.optionGroup {

? flex: 1 1 auto;

}


.optionGroup label {

? display: block;

}


#pricedisplay {

? font-weight: bold;

}

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


<div class="optionsPane">

? <div class="optionGroup">

? ? <h2>Drinks</h2>

? ? <label>

? ? ? <input class="option" type="checkbox" name="drink" value="5">

? ? ? <span>One</span>

? ? </label>

? ? <label>

? ? ? <input class="option" type="checkbox" name="drink" value="10">

? ? ? <span>Two</span>

? ? </label>

? ? <label>

? ? ? <input class="option" type="checkbox" name="drink" value="20">

? ? ? <span>Three</span>

? ? </label>

? </div>

? <div class="optionGroup">

? ? <h2>Sides</h2>

? ? <label>

? ? ? <input class="option" type="checkbox" name="side" value="3">

? ? ? <span>One</span>

? ? </label>

? ? <label>

? ? ? <input class="option" type="checkbox" name="side" value="4">

? ? ? <span>Two</span>

? ? </label>

? ? <label>

? ? ? <input class="option" type="checkbox" name="side" value="5">

? ? ? <span>Three</span>

? ? </label>

? </div>

? <div class="optionGroup">

? ? <h2>Deserts</h2>

? ? <label>

? ? ? <input class="option" type="checkbox" name="desert" value="5">

? ? ? <span>One</span>

? ? </label>

? ? <label>

? ? ? <input class="option" type="checkbox" name="desert" value="7">

? ? ? <span>Two</span>

? ? </label>

? ? <label>

? ? ? <input class="option" type="checkbox" name="desert" value="10">

? ? ? <span>Three</span>

? ? </label>

? </div>

</div>

<div class="price">Purchase Price:

? <span id="pricedisplay"></span>

</div>


查看完整回答
反對(duì) 回復(fù) 2023-08-05
  • 1 回答
  • 0 關(guān)注
  • 139 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)