[英]implementing a JQuery function to trigger an event every time a DropDownList is selected
[英]How to trigger a jQuery function every time new option is selected?
我有一個HTML <form>
帶有<select>
能力下拉菜單<option>
,其中每個<option>
都有一個值標簽,代表所選車輛的價格。
我希望<div class="price-here">
每次選擇<option class="b">
都顯示所選選項的值。
在我的代碼中,我使用了change()
函數,但它似乎不起作用。 怎么了?
HTML + CSS:
<script>
$('select.car-selector').change(function () {
var packagePrice = $(".car-selector option.b:selected").val();
$('div.price-here').text(packagePrice + " USD");
});
</script>
<form>
<select class="car-selector">
<option class="a" value="" selected>Select brand</option>
<option class="b" value="150">Volvo</option>
<option class="b" value="350">Saab</option>
<option class="b" value="150">Opel</option>
<option class="b" value="500">Audi</option>
</select>
</form>
<br /><br />
<div class="price-here">Default price</div>
試試這個代碼:
$('select.car-selector').change(function () {
if($(this).hasClass('b')){
var packagePrice = $(".car-selector").val();
$('div.price-here').html(packagePrice + " USD");
}
else
$('div.price-here').html('');
});
通過簡單地使用HTML,您可以將disabled
屬性添加到第一個選項<option class="a" value="" selected disabled>Select brand</option>
。
一旦最終用戶選擇了某個選項,就不可能返回到“選擇品牌”選項。
$('select.car-selector').change(function () { var packagePrice = $('.car-selector option.b:selected').val(); $('div.price-here').text(packagePrice + ' USD'); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <form> <select class="car-selector"> <option class="a" value="" selected disabled>Select brand</option> <option class="b" value="150">Volvo</option> <option class="b" value="350">Saab</option> <option class="b" value="150">Opel</option> <option class="b" value="500">Audi</option> </select> </form> <br /><br /> <div class="price-here">Default price</div>
還是使用JavaScript,您最多要檢查packagePrice
是否undefined
並且可以使用條件(三元)運算符 packagePrice ? packagePrice + ' USD' : 'Default price'
來做到這packagePrice ? packagePrice + ' USD' : 'Default price'
packagePrice ? packagePrice + ' USD' : 'Default price'
。
$('select.car-selector').change(function () { var packagePrice = $('.car-selector option.b:selected').val(), text = packagePrice ? packagePrice + ' USD' : 'Default price'; $('div.price-here').text(text); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <form> <select class="car-selector"> <option class="a" value="" selected>Select brand</option> <option class="b" value="150">Volvo</option> <option class="b" value="350">Saab</option> <option class="b" value="150">Opel</option> <option class="b" value="500">Audi</option> </select> </form> <br /><br /> <div class="price-here">Default price</div>
檢查
value
而不是類b
,因此刪除選擇器的類b
並像這樣檢查value
,如果值是""
,則顯示Defalut price
否則,顯示value
。
$(document).ready(function(){
$('select.car-selector').change(function () {
var packagePrice = $(".car-selector option:selected").val();
packagePrice = $.trim(packagePrice);
if(packagePrice !=="")
$('div.price-here').text(packagePrice + " USD");
else
$('div.price-here').text('Default price');
})
})
$(document).ready(function(){ $('select.car-selector').change(function () { var packagePrice = $(".car-selector option:selected").val(); packagePrice = $.trim(packagePrice); if(packagePrice !=="") $('div.price-here').text(packagePrice + " USD"); else $('div.price-here').text('Default price'); }) })
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <form> <select class="car-selector"> <option class="a" value="" selected>Select brand</option> <option class="b" value="150">Volvo</option> <option class="b" value="350">Saab</option> <option class="b" value="250">Opel</option> <option class="b" value="500">Audi</option> </select> </form> <br /><br /> <div class="price-here">Default price</div>
在您的情況下:
packagePrice
是用戶選擇了類別b
value選項,因此,當用戶選擇class類a
第一個選項packagePrice
獲得valueundefined
。
要解決此問題:您必須檢查packagePrice
是否undefined
。
$(document).ready(function(){
$('select.car-selector').change(function () {
var packagePrice = $(".car-selector option.b:selected").val();
if(packagePrice!=undefined)
$('div.price-here').text(packagePrice + " USD");
else
$('div.price-here').text("Default price");
});
})
$(document).ready(function(){ $('select.car-selector').change(function () { var packagePrice = $(".car-selector option.b:selected").val(); if(packagePrice!=undefined) $('div.price-here').text(packagePrice + " USD"); else $('div.price-here').text("Default price"); }); })
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <form> <select class="car-selector"> <option class="a" value="" selected>Select brand</option> <option class="b" value="150">Volvo</option> <option class="b" value="350">Saab</option> <option class="b" value="150">Opel</option> <option class="b" value="500">Audi</option> </select> </form> <br /><br /> <div class="price-here">Default price</div>
如評論中已經提到的
嘗試添加更改事件偵聽
select.car-selector
時,沒有select.car-selector
。
您可以通過返回其長度來檢查DOM元素的存在: https : //learn.jquery.com/using-jquery-core/faq/how-do-i-test-whether-an-element-exists/
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script> console.log("Before: ", $("select.car-selector").length); // $("select.car-selector") is not in the DOM $('select.car-selector').change(function() { var packagePrice = $(".car-selector option.b:selected").val(); $('div.price-here').text(packagePrice + " USD"); }); </script> <form> <select class="car-selector"> <option class="a" value="" selected>Select brand</option> <option class="b" value="150">Volvo</option> <option class="b" value="350">Saab</option> <option class="b" value="150">Opel</option> <option class="b" value="500">Audi</option> </select> </form> <br /><br /> <div class="price-here">Default price</div> <script> console.log("After: ", $("select.car-selector").length); // select.car-selector exists in the DOM </script>
因此,解決方案是在.change
的元素之后包含.change
腳本。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script> console.log("Before: ", $("select.car-selector").length); </script> <form> <select class="car-selector"> <option class="a" value="" selected>Select brand</option> <option class="b" value="150">Volvo</option> <option class="b" value="350">Saab</option> <option class="b" value="150">Opel</option> <option class="b" value="500">Audi</option> </select> </form> <br /><br /> <div class="price-here">Default price</div> <script> console.log("After: ", $("select.car-selector").length); $('select.car-selector').change(function() { var packagePrice = $(".car-selector option.b:selected").val(); $('div.price-here').text(packagePrice + " USD"); }); </script>
您應該使用id,並且需要獲取的值是選項中的select onot的值。
$('#car-selector').change(function () { var packagePrice = $("#car-selector").val(); $('div.price-here').text(packagePrice + " USD"); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <form> <select id="car-selector"> <option class="a" value="" selected>Select brand</option> <option class="b" value="150">Volvo</option> <option class="b" value="350">Saab</option> <option class="b" value="150">Opel</option> <option class="b" value="500">Audi</option> </select> </form> <br /><br /> <div class="price-here">Default price</div>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.