Javascript 可以在逗号和点之间交换十进制分隔符吗?
我有一个计算器,用来计算美元和欧元的价格,我在这里面临的最大问题是,使用逗号作为十进制分隔符不适用于Javascript 可以在逗号和点之间交换十进制分隔符吗?,javascript,Javascript,我有一个计算器,用来计算美元和欧元的价格,我在这里面临的最大问题是,使用逗号作为十进制分隔符不适用于标记。我已经读到,浏览器语言决定了这个特定输入类型的响应方式,但我想知道是否有一种方法可以用JS来改变这一点 function pplCalculator() { let endprice = document.getElementById('ppl-calculator--endprice'); let margin = document.getElementById('ppl-
标记。我已经读到,浏览器语言决定了这个特定输入类型的响应方式,但我想知道是否有一种方法可以用JS来改变这一点
function pplCalculator() {
let endprice = document.getElementById('ppl-calculator--endprice');
let margin = document.getElementById('ppl-calculator--margin');
let basePrice = document.getElementById('ppl-calculator--val');
let locale = document.querySelector('html').getAttribute('lang');
let config = {
dollar: {
retailDefault: 18.99,
basePrice: 13.99,
},
euro: {
retailDefault: 19.99,
basePrice: 14.99
}
}
let currency = locale === 'en-US' ? 'dollar' : 'euro';
function calculatorInit(){
endprice.value = config[currency].retailDefault;
basePrice.textContent = config[currency].basePrice;
margin.textContent = (endprice.value - basePrice.textContent).toLocaleString(locale);
}
function updateCalculator(target, events, handler){
events.map(function(event){
target.addEventListener(event, () => {
let userInput = endprice.value;
let marginValue = userInput - basePrice.textContent;
if (marginValue > 0) {
margin.textContent = marginValue.toLocaleString(locale);
} else {
margin.textContent = 0;
}
});
})
}
calculatorInit();
updateCalculator(endprice, ['keyup','change']);
}
pplCalculator();
这是我的HTML
<table>
<tr>
<td><strong>Retail Price</strong></td>
<td><input id="ppl-calculator--endprice" type="number"></td>
</tr>
<tr>
<td><strong>Profit</strong></td>
<td><p id="ppl-calculator--margin"></p></td>
</tr>
<tr>
<td><strong>Base Price</strong></td>
<td><p id="ppl-calculator--val"></p></td>
</tr>
</table>
零售价格
利润
基本价格
该页面有一个语言切换器,它使用OctoberCMS的activeLocale更改我的HTML标记中的语言属性。locale
var使用该信息
实际的计算工作正常,但我似乎不知道如何在输入和Init函数中切换到欧元的EU格式。使用element.toLocalString()
可以创建一个字符串(用于显示输出),但显然不适用于输入
容纳两个十进制分隔符的最佳方式是什么
我还要补充一点;我希望尽可能避免构建微调器框来增加和减少数字,因此使用数字输入字段而不是文本。如果这是完全不可避免的,我想应该这样做,但我想先仔细检查一下。只要字符串替换句号中的逗号,如果一种货币使用了一个愚蠢的除名器,那么字符串在完成后将其替换回来。这是否回答了您的问题@AloisgMovingTocodidact.com是和否。我只是仔细阅读了一下,我想它回答了我的问题,即是否可以在浏览器语言之外更改语言,但它不能解决我的问题,因为我确实需要向上和向下按钮。也许我需要自己去做——如果可以的话,我真的很想避免。使用数字的输入类型文本。只需字符串替换句号中的逗号,如果货币使用愚蠢的除数器,则在完成时字符串将其替换回来。这是否回答了您的问题@AloisgMovingTocodidact.com是和否。我只是仔细阅读了一下,我想它回答了我的问题,即是否可以在浏览器语言之外更改语言,但它不能解决我的问题,因为我确实需要向上和向下按钮。也许我需要自己去做——如果可以的话,我真的很想避免。使用数字的输入类型文本格式。