我在laravel中使用货币包,它返回带有前缀的值,例如$10
或€6
。
问题是我通过ajax得到这些价格并将它们加在一起e.g. product price + size price
然后我得到用户订单的总价,问题是我有这些前缀$
或{{1}我无法计算价格€
所以我需要从我的JavaScript中删除价格中的那些字母,我尝试了一些我在网上找到的方式,例如numbers
和slice(1)
它们都没有给了我寻找的结果。
这是我的代码:
substring(1)
从<script>
var start_price = parseFloat($('#price').attr('data-price'));
$('#finalprice').val(parseFloat(start_price)); //default price
$("#installation").click(function(){
var amountToAdd = 0;
var nf = new Intl.NumberFormat('en-US', {
maximumFractionDigits:0,
minimumFractionDigits:0
});
$("#installation").each(function() {
if($(this).is(":checked")){
amountToAdd += parseFloat($(this).val());
$('#finalprice').val(parseFloat(amountToAdd+start_price)); // change with installation price
} else{
$('#finalprice').val(parseFloat(start_price)); // back to default price
}
});
$('#price').text(nf.format(parseFloat(amountToAdd+start_price)));
});
</script>
和start_price
由于我使用多种货币,并非我的所有货币都有amountToAdd
个字母前缀,其中一些货币的前缀为1
。
e.g。
2
$10
如您所见,我的其他货币前缀为Rp100000
,即2个字母。
问:我该如何处理这种情况?
答案 0 :(得分:0)
听起来你可以使用正则表达式.replace从字符串中删除所有非数字字符。这将删除所有货币符号,无论符号或其字符长度如何。您可以像这样使用它:
<script>
var start_price = parseFloat($('#price').attr('data-price').replace(/\D/g,'')); //HERE
$('#finalprice').val(parseFloat(start_price)); //default price
$("#installation").click(function(){
var amountToAdd = 0;
var nf = new Intl.NumberFormat('en-US', {
maximumFractionDigits:0,
minimumFractionDigits:0
});
$("#installation").each(function() {
if($(this).is(":checked")){
amountToAdd += parseFloat($(this).val().replace(/\D/g,'')); //AND HERE
$('#finalprice').val(parseFloat(amountToAdd+start_price)); // change with installation price
} else{
$('#finalprice').val(parseFloat(start_price)); // back to default price
}
});
$('#price').text(nf.format(parseFloat(amountToAdd+start_price)));
});
</script>
如果您需要在某个时候修改正则表达式,这可以是找到适合您的正则工具的有用工具:https://regex101.com