2012-03-22 44 views
0

我認爲這將是這麼簡單......jQuery選擇選項,更改html內容。我究竟做錯了什麼?

$('#yourSelect').change(function() { 
    if ($(this).val() == '12500', '8500', '7000') { 
     $("#textBox").html("+ £10 delivery"); 
    } else { 
     $("#textBox").html("+ £6 delivery"); 
    } 
}); 

<select name="Amount" id="yourSelect"> 
    <option value="5000">5000</option> 
    <option value="6000">6000</option> 
    <option value="7000">7000</option> 
    <option value="8500">8500</option> 
    <option value="12500">12500</option> 
</select> 

<div id="textBox">+ £6 delivery</div> 

有我失去了我的心?這裏有什麼不對?

回答

3

相反的if ($(this).val() == '12500', '8500', '7000') {您需要使用||操作:

$('#yourSelect').change(function() { 
    var value = $(this).val(); 
    if (value == '12500' || value == '8500' || value == '7000') { 
     $("#textBox").html("+ £10 delivery"); 
    } 
    else { 
     $("#textBox").html("+ £6 delivery"); 
    } 
});​ 

正如評論說@hafichuk,可以將該值解析電話號碼,並用一個簡單的條件:

if (parseInt($(this).val(), 10) >= 7000) 
    $("#textBox").html("+ £10 delivery"); 
else 
    $("#textBox").html("+ £6 delivery"); 

你可以使它更簡單:

var output = parseInt($(this).val(), 10) >= 7000 ? '+ £10 delivery' 
               : '+ £6 delivery'; 
$("#textBox").html(output);         
+2

*可能更合適的一件事就是將您的「金額」視爲數字而不是字符串。我會考慮使用大於比較的值:'if(value> = 7000){' – hafichuk 2012-03-22 14:22:34

+0

@hafichuk。謝謝,補充說我的答案。新增學分。我希望我們可以拆分代表... **: - )** – gdoron 2012-03-22 14:25:49

1

變化,如果條件

var val = $(this).val(); 
if (val == '12500' || val == '8500' || val == '7000') 

otherway是

var arr = ['12500','8500','7000']; 
$('#yourSelect').change(function() { 
    if (arr.indexOf($(this).val()) !== -1) { 
     $("#textBox").html("+ £10 delivery"); 
    } else { 
     $("#textBox").html("+ £6 delivery"); 
    } 
}); 
+0

更好地緩存jQuery對象,然後構造它三次。 – gdoron 2012-03-22 14:20:43

+0

是啊是啊..只是做那個..謝謝老兄 – 2012-03-22 14:22:24

0

你的if裏面的代碼是不是有效的布爾表達式。改成這樣:

if ($(this).val() == '12500' || $(this).val() == '8500' || $(this).val() == '7000') { 
0

試試這個

$(document).ready(function() { 
    $('#yourSelect').change(function() { 
     if ($(this).val() == '12500' || $(this).val() == '8500' || $(this).val() == '7000') { 
      $("#textBox").html("+ £10 delivery"); 
     } 
     else { 
      $("#textBox").html("+ £6 delivery"); 
     } 
    }); 
})​ 

jsFiddle Link

0

或者,你可以使用$(this).val() >= 7000如果快遞總是花費更多當達到一定量以上。然後,如果金額選擇發生變化,則不必更改代碼,除非您也更改了較高的交貨成本閾值。

0
$('#yourSelect').change(function() { 
    var deliveryPrice = parseInt(this.value, 10) >= 7000 ? 10 : 6; 
    $('#textBox').text('+ £' + deliveryPrice + ' delivery'); 
});