0

我有两个事件:一个onFocus( saveOld) 和一个OnChange( showPoints)。当用户关注下拉菜单时,我使用该jquery.data功能保存下拉菜单的旧值。当用户更改下拉列表的值时,我会检查旧值是否大于当前值。如果是这样,我会相应地调整总数。但这仅在我.dataonChange. 没有警报,什么都不会发生。

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)警报应该在哪里。仍然没有工作。

4

3 回答 3

3

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

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

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

于 2012-11-23T11:02:02.107 回答
1

当您发出警报时,您会失去对元素的关注。所以它的情况发生了变化alert()

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

于 2012-11-23T10:49:45.987 回答
0

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

于 2012-11-23T10:53:46.390 回答