解析并比较货币值

时间:2016-06-15 12:30:25

标签: jquery

我有两个以类leasedlimit命名的div。在每个div中都有一个值,如果#next div中的值高于.leased div中的值,我使用jQuery隐藏另一个div .limit

这一切都适用于以下代码,但我计划div中的值为货币,即£10,000.00。因此,jQuery不会返回任何内容。

我需要对以下代码做什么才能解析货币值?

<div class="limit">£10,000.00</div>
<div class="leased">£11,000.00</div>
<div id="next">next</div>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script type="text/javascript">
    $("#next").toggle(parseInt($(".leased").text(), 10) < parseInt($(".limit").text(), 10));
</script>

谢谢。

2 个答案:

答案 0 :(得分:3)

您可以使用正则表达式从text()中删除非数字字符,然后在进行比较之前通过parseFloat()运行它们,如下所示:

var limit = parseFloat($('.limit').text().replace(/[^0-9\.]+/g,""));
var leased = parseFloat($('.leased').text().replace(/[^0-9\.]+/g,""));
$("#next").toggle(leased < limit);

Working example

或者,您可以使用data-*属性将纯值添加到HTML中,并直接对这些值执行逻辑,如下所示:

<div class="limit" data-val="10000.00">£10,000.00</div>
<div class="leased" data-val="11000.00">£11,000.00</div>
<div id="next">next</div>
$("#next").toggle($('.leased').data('val') < $('.limit').data('val'));

Working example

答案 1 :(得分:0)

一种选择是使用现成的库,可以将货币字符串转换为数字,例如Numeraljs

否则,正如其他答案和注释中所建议的那样,要么删除所有非数字字符,要么创建一个可能(根据您的需要)也支持逗号作为小数分隔符的正则表达式,因为在某些国家/地区使用了这种语法。 / p>