如何根据语言选择实现输入框符号转换及小数位数限制?
问题:根据选中语言转换输入框的标点符号
需求说明:
- 有支持3种语言选择的按钮,需根据选中语言转换输入框内的符号
- 当
currentCulture为fi-us或fi-ru时,将输入中的点(.)转换为逗号(,) - 当
currentCulture为fi-tr时,将输入中的逗号(,)转换为点(.)
现有JavaScript代码如下:
document.querySelectorAll('.form-control').forEach(function(input) { input.addEventListener('input', function(event) { let value = event.target.value; let currentCulture = document.querySelector('.nav-link.dropdown-toggle i').classList[1]; console.log("User-selected language: " + userCulture); if (!isNaN(value) && value.includes('.')) { let parts = value.split('.'); if (parts[1].length > 2) { parts[1] = parts[1].slice(0, 2); event.target.value = parts.join('.'); } } }); });
修改后的代码
document.querySelectorAll('.form-control').forEach(function(input) { input.addEventListener('input', function(event) { let value = event.target.value; let currentCulture = document.querySelector('.nav-link.dropdown-toggle i').classList[1]; // 修复原代码的变量名错误 console.log("User-selected language: " + currentCulture); // 先统一处理小数位数限制,再做标点转换 if (value.includes('.') || value.includes(',')) { // 把输入统一转为点分隔格式,避免两种标点干扰逻辑 let normalizedValue = value.replace(',', '.'); let parts = normalizedValue.split('.'); // 限制小数位最多2位 if (parts.length === 2 && parts[1].length > 2) { parts[1] = parts[1].slice(0, 2); normalizedValue = parts.join('.'); } // 根据当前语言转换标点 switch(currentCulture) { case 'fi-us': case 'fi-ru': event.target.value = normalizedValue.replace('.', ','); break; case 'fi-tr': event.target.value = normalizedValue; break; default: event.target.value = value; } } else { event.target.value = value; } }); });
关键修改说明
- 修复原代码
console.log中的变量名错误(userCulture改为currentCulture) - 先将输入统一转为点分隔格式处理小数位限制,避免同时存在两种标点导致逻辑混乱
- 添加分支判断,根据
currentCulture实现对应标点转换逻辑 - 兼容输入中同时出现点和逗号的场景,保证逻辑一致性
内容的提问来源于stack exchange,提问作者Bilge
相关产品推荐
相关产品推荐

