我使用Bootstrap構建了一個表單。用戶單擊一個單選按鈕並在頁面底部顯示一個數字。Bootstrap單選按鈕 - 使用jquery添加變量
<!-- FOOTER -->
<div class="container">
<div class="row">
<div class="col-lg-offset-3 col-xs-12 col-lg-6">
<div class="jumbotron">
<div class="row text-center">
<div class="text-center col-xs-12 col-sm-12 col-md-12 col-lg-12">
<h2>Broadband Speed Calculator</h2>
</div>
<div class="text-center col-lg-12">
<!-- CONTACT FORM https://github.com/jonmbake/bootstrap3-contact-form -->
<form class="form-horizontal" role="form" method="post" action="" id="broadbandForm">
<div class="form-group">
<label for="video" class="col-xs-12 control-label text-left">Number of people who use streaming video (eg. Youtube or Netflix) on your network</label>
<div class="col-xs-12 btn-group" data-toggle="buttons">
<label class="btn btn-primary active"><input class="BroadbandRadioClass" type="radio" name="videoStream" value="0" checked>0</label>
<label class="btn btn-primary"><input class="BroadbandRadioClass" type="radio" name="videoStream" value="9">1</label>
<label class="btn btn-primary"><input class="BroadbandRadioClass" type="radio" name="videoStream" value="18">2</label>
<label class="btn btn-primary"><input class="BroadbandRadioClass" type="radio" name="videoStream" value="27">3</label>
<label class="btn btn-primary"><input class="BroadbandRadioClass" type="radio" name="videoStream" value="36">4+</label>
</div>
</div>
<div class="form-group">
<label for="videoChat" class="col-xs-12 control-label text-left">Number of people who use video chat (eg. Skype or Facetime) on your network</label>
<div class="col-xs-12 btn-group" data-toggle="buttons">
<label class="btn btn-primary active"><input class="BroadbandRadioClass" type="radio" name="videoChat" value="0" checked>0</label>
<label class="btn btn-primary"><input class="BroadbandRadioClass" type="radio" name="videoChat" value="9">1</label>
<label class="btn btn-primary"><input class="BroadbandRadioClass" type="radio" name="videoChat" value="18">2</label>
<label class="btn btn-primary"><input class="BroadbandRadioClass" type="radio" name="videoChat" value="27">3</label>
<label class="btn btn-primary"><input class="BroadbandRadioClass" type="radio" name="videoChat" value="36">4+</label>
</div>
</div>
<div class="form-group">
<label for="gaming" class="col-xs-12 control-label text-left">Number of people who use online gaming on your network</label>
<div class="col-xs-12 btn-group" data-toggle="buttons">
<label class="btn btn-primary active"><input class="BroadbandRadioClass" type="radio" name="gaming" value="0" checked>0</label>
<label class="btn btn-primary"><input class="BroadbandRadioClass" type="radio" name="gaming" value="5">1</label>
<label class="btn btn-primary"><input class="BroadbandRadioClass" type="radio" name="gaming" value="10">2</label>
<label class="btn btn-primary"><input class="BroadbandRadioClass" type="radio" name="gaming" value="15">3</label>
<label class="btn btn-primary"><input class="BroadbandRadioClass" type="radio" name="gaming" value="20">4+</label>
</div>
</div>
<div class="form-group">
<label for="audioStream" class="col-xs-12 control-label text-left">Number of people who use streaming audio on your network</label>
<div class="col-xs-12 btn-group" data-toggle="buttons">
<label class="btn btn-primary active"><input class="BroadbandRadioClass" type="radio" name="audioStream" value="0" checked>0</label>
<label class="btn btn-primary"><input class="BroadbandRadioClass" type="radio" name="audioStream" value=".32">1</label>
<label class="btn btn-primary"><input class="BroadbandRadioClass" type="radio" name="audioStream" value=".64">2</label>
<label class="btn btn-primary"><input class="BroadbandRadioClass" type="radio" name="audioStream" value=".96">3</label>
<label class="btn btn-primary"><input class="BroadbandRadioClass" type="radio" name="audioStream" value="1.28">4+</label>
</div>
</div>
<div class="form-group">
<label for="generalUse" class="col-xs-12 control-label text-left">Number of people who use the Internet for general use (shopping, banking, e-mail, social media, etc.) on your network</label>
<div class="col-xs-12 btn-group" data-toggle="buttons">
<label class="btn btn-primary active"><input class="BroadbandRadioClass" type="radio" name="generalUse" value="0" checked>0</label>
<label class="btn btn-primary"><input class="BroadbandRadioClass" type="radio" name="generalUse" value=".5">1</label>
<label class="btn btn-primary"><input class="BroadbandRadioClass" type="radio" name="generalUse" value="1">2</label>
<label class="btn btn-primary"><input class="BroadbandRadioClass" type="radio" name="generalUse" value="1.5">3</label>
<label class="btn btn-primary"><input class="BroadbandRadioClass" type="radio" name="generalUse" value="2">4+</label>
</div>
</div>
<div class="form-group">
<div id="CalculationResult" class="col-sm-8 col-sm-offset-4">
</div>
</div>
</form>
<!-- END CONTACT FORM -->
</div>
</div>
</div>
</div>
</div>
</div>
<!--/FOOTER -->
我首先使用了下面的代碼,它工作正常,除了包含Bootstrap腳本時。然後它破裂。我知道這是因爲Bootstrap處理表單的方式。
$("input[type=radio]").click(function() {
var Broadbandtotal = 0;
$("input[type=radio]:checked").each(function() {
Broadbandtotal += parseFloat($(this).val());
});
$("#CalculationResult").html("You need at least " + Broadbandtotal);
console.log(Broadbandtotal);
});
這很好,除了我想使用Bootstrap。所以我換了幾件東西,最後得到了這個:
$(".btn").click(function() {
var Broadbandtotal = 0;
$(" .active input:radio").each(function() {
Broadbandtotal += parseFloat($(this).val());
});
$("#CalculationResult").html("You need at least " + Broadbandtotal);
console.log(Broadbandtotal);
});
這實際上工作,但有一個很奇怪的怪癖。你必須點擊2個按鈕才能在底部顯示數字(即點擊按鈕1,它會告訴你答案是「0」 - 點擊按鈕2,它會告訴你答案是「1」,這實際上是你應該做的通過點擊第一個按鈕。)
我在這裏錯過了什麼嗎?它看起來應該像第一個代碼一樣運行,這沒有問題。看起來好像是在代碼的其餘部分運行之後以某種方式添加變量,但我一直無法弄清楚這一點。控制檯也說了同樣的事情。提示需要拼命!謝謝...
小提琴:https://jsfiddle.net/99x50s2s/234/
你可以包括HTML,使這個問題更加完整? – Richard
@理查德我更新了謝謝 – Cliff
似乎默認情況下選擇了第一個按鈕。我對嗎? –