2012-09-28 45 views
1

我正在嘗試爲培訓課程創建訂單,其中包括對現有或以前客戶的折扣。它應該很簡單 - 只需勾選複選框,如果您是以前的學生,表單將應用折扣。爲什麼與我的複選框關聯的操作不會在第一次點擊時起作用?

我寫的代碼差不多的作品,但有一個明顯的問題。你第一次檢查盒子時,什麼也沒有發生。然後,如果取消選中該框,則會應用折扣。再次選中,並取消折扣。這意味着,如果您選中該複選框一次,則沒有任何反應,但如果您再次點擊該複選框,儘管表示您是而不是現有/前客戶,但您仍然可以獲得折扣。

的HTML如下:

<input type="checkbox" name="discounttick" value="Current or former student" id="discountbox" /> 

而jQuery的:

var discount = 1; 

function discountfunction(){ 
if($("#discountbox").attr('checked')){ 
discount = 0.9; 
} 
else { 
discount = 1; 
} 
} 

$("#discountbox").click(discountfunction); 

任何幫助將非常感激。

謝謝!

+0

它看起來是爲我工作。見[demo](http://jsfiddle.net/8RgRZ/) –

+0

你什麼時候調用改變的'discount'變量的代碼? –

回答

2

attr方法不用於獲取/設置元素的特性一個不錯的選擇,你可以使用prop代替:

if($("#discountbox").prop('checked')){ 

您還可以使用三元運營商和change事件:

$('#discountbox').change(function(){ 
    discount = this.checked ? 0.9 : 1 
}) 
+0

輝煌,工作!謝謝! – Chris

+0

@Chris不客氣。 – undefined

0

花花公子變換你的變數

var discount = 1; 

function discountfunction(){ 
if($("#discountbox").attr('checked')){ 
discount = 1; 
} 
else { 
discount = 0.9; 
} 
} 

$("#discountbox").click(discountfunction); 
+0

不,OP的可能是正確的。 「折扣」看起來像價格上的乘數。 –

0

嘗試使用而不是attr。

var discount = 1; 

    function discountfunction(){ 
    if($("#discountbox").is(':checked')){ 
    discount = 0.9; 
    } 
    else { 
    discount = 1; 
    } 
    } 

    $("#discountbox").click(discountfunction); 
相關問題