除非我警告变量,否则我的事件无法正常工作?为什么?使用Javascript / jQuery的

时间:2012-11-23 10:39:56

标签: javascript jquery javascript-events drop-down-menu

我有两个事件:onFocus(saveOld)和OnChange(showPoints)。当用户关注下拉列表时,我使用jquery.data函数来保存下拉列表的旧值。当用户更改下拉列表的值时,我会检查旧值是否大于当前值。如果是这样,我会根据情况调整总数。但这只适用于我在onChange中从.data函数获取旧值后提醒旧值的情况。没有警报没有任何反应。

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)。仍然无法正常工作

3 个答案:

答案 0 :(得分:3)

尝试将onfocus更改为onclick,并将当前值保存到showPoints末尾的.data中,如下所示:

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

我会在showPoints函数中使用局部变量。

答案 1 :(得分:1)

当你发出警报时,你会从元素中失去焦点。因此alert()案例的情况发生了变化。

所以我会说你保存值onBlur(当你离开控件时调用。)

答案 2 :(得分:0)

延迟(1000)无济于事,因为它只会增加处理时间,而不会给函数处理更多时间。我会使用x3ro的解决方案并检查函数的调用方式。