首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在记住Jquery中的旧值的同时,在下拉列表中选择新值

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

Stack Overflow用户
提问于 2012-11-23 16:56:22
回答 4查看 630关注 0票数 0

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

代码语言:javascript
运行
复制
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不支持这个。有什么建议吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-11-23 20:14:54

我通过使用下拉列表中的两个事件解决了这个问题。onClick保存旧数据,使用jquery.data和onChange对照新值检查旧值。如果新值比旧值小,我就相应地调整总分。

HTML:

代码语言:javascript
运行
复制
<select name="dropdown onClick="saveOld(this.value, this.name)" onchange="showPoints(points, this.value,this.name)">

JS/Jquery

代码语言:javascript
运行
复制
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

感谢你们所有人的回答!

票数 0
EN

Stack Overflow用户

发布于 2012-11-23 18:47:52

如上所述,您可以将之前的值存储在自定义属性中,并且可以使用focus事件来设置旧值,下面这几行中的内容应该是有效的:

代码语言:javascript
运行
复制
$('p#points').on('focus', function () {
    $(this).attr('old-value', $(this).val();
});
票数 2
EN

Stack Overflow用户

发布于 2012-11-23 17:05:10

为什么不在任何时候任何下拉列表发生变化时重新计算总点数成本,并通过从customerPoints中减去新的总点数来重新计算currentPoints?在我看来,这似乎是一种比加减值更干净的解决方案

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13525688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档