2012-11-23 19 views
0

我有兩個事件:一個onFocus(saveOld)和一個OnChange(showPoints)。當用戶關注下拉菜單時,我使用jquery.data函數來保存下拉菜單的舊值。當用戶更改下拉列表的值時,我會檢查舊值是否大於當前值。如果是這樣,我總調整總量。但是,只有在我的onChange中的.data函數獲得舊值後,才能使用此值。沒有警報沒有發生。除非我提醒變量,否則我的事件無法正常工作?爲什麼? Javascript/jquery

function showPoints(pointCategory, ddlAmount, name){ 
    old = jQuery.data(document.body,name); 

    alert(old); 

    var Points = parseInt($('p#points').html()); 

    if(old > ddlAmount){ 
     diff = old - ddlAmount; 
     currentPoints = Points + (diff * pointCategory); 
    }else{ 
     currentPoints = Points - (ddlAmount * pointCategory); 
    } 
    $('p#points').html(currentPoints); 
}//showPoints 

function saveOld(oldAmount, name){ 
    $(document.body).data(name,oldAmount); 
} 

沒有showPoints()中的警報,這無法正常工作。出了什麼問題?

謝謝你們

編輯:請注意,我已經嘗試了this.delay(1000),其中警報應該的。仍然沒有工作

+1

顯示'onfocus'和'onChange'代碼。 –

+3

我會假設警報需要顯示的時間和您點擊它的時間會讓瀏覽器有時間做一些沒有時間的事情,如果沒有警報的話。你在$ .ready()上運行你的代碼嗎?如果不是,你應該是。 – fresskoma

+0

@TalhaAhmedKhan這些函數是事件觸發時所調用的。 onFocus = saveOld和onChange = showPoints – JeremyS

回答

3

嘗試改變的onfocus到的onclick並保存當前值showPoints年底。數據像這樣:

$('p#points').html(currentPoints); 
$(document.body).data(name,currentPoints); 

我會用內部showPoints函數的局部變量。

+0

onClick做到了!謝謝 – JeremyS

1

當你提醒你失去焦點元素。因此,對於alert()案件,情況有所改變。

所以,我要說你保存價值onBlur(稱爲當u離開的控制。)

+0

只要用戶在選擇金額後點擊屏幕,而不是在不同的下拉菜單上,該功能就可以正常工作。不幸的是,這不能很好地解決問題。 – JeremyS

0

延遲(1000)不會幫助,因爲它只會增加處理的時間,而不是給了函數來處理更多的時間。我會選擇x3ro的解決方案,並檢查函數的調用方式。

相關問題