在记住Jquery中的旧值时,在下拉列表中选择一个新值

时间:2012-11-23 08:56:22

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

我正在网上商店工作,客户可以通过下拉列表选择要购买的商品数量。每个项目都有一个分值,我通过jQuery(onChange事件)计算他们购买的总数:

function showPoints(itemPointValue, ddlAmount){
    var customerPoints = parseInt($('p#points').html());
    currentPoints = customerPoints - (ddlAmount * itemPointValue);
    $('p#points').html(currentPoints);
}//showPoints     

这里唯一的问题是,如果他们将数量从5改为4,则另外4 *点值将从他们的“总分数”中取消。他们的总分最终变得完全不准确,他们甚至可以低于0.我想使用jquery.data设置“oldValue”变量,但IE不支持这一点。有什么建议吗?

4 个答案:

答案 0 :(得分:2)

您可以将上一个值存储在自定义属性上,如上所述,您可以使用焦点事件来设置旧值,其中的某些内容应该有效:

$('p#points').on('focus', function () {
    $(this).attr('old-value', $(this).val();
});

答案 1 :(得分:0)

为什么不在任何下拉列表更改时重新计算总点数成本,并通过从customerPoints中减去新总计来重新计算currentPoints?对我来说,这似乎是一个比添加和减去值更清晰的解决方案

答案 2 :(得分:0)

如何在元素上创建自定义属性:

$('p#points').attr('old-value',5);

并像这样检索它:

$('p#points').attr('old-value');

答案 3 :(得分:0)

我通过在下拉列表中使用两个事件解决了这个问题。 onClick使用jquery.data和onChange保存旧数据,以根据新值检查旧值。如果新值小于旧值,则相应地调整点总数。

HTML:

<select name="dropdown onClick="saveOld(this.value, this.name)" onchange="showPoints(points, this.value,this.name)">

JS / Jquery的

function showPoints(pointCategory, ddlAmount, name){
    old = jQuery.data(document.body,name);
    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);
}//saveOld

谢谢大家的答案!