Javascript 如何解决输入数字格式的问题?
人们。我需要修复输入字段中的错误。我使用Regex将货币的格式设置为:(R$1.200.200,99)。我想知道我的代码有什么问题?。求你了 遵循代码链接Javascript 如何解决输入数字格式的问题?,javascript,html,css,reactjs,Javascript,Html,Css,Reactjs,人们。我需要修复输入字段中的错误。我使用Regex将货币的格式设置为:(R$1.200.200,99)。我想知道我的代码有什么问题?。求你了 遵循代码链接 { 设温度=值+“”; temp=临时替换(/([0-9]{2})$/g,“,$1”); 如果(温度长度>6){ temp=temp.replace(/([0-9]{3}),([0-9]{2}$)/g,“.$1,$2”); 返回温度; } }} 解析器={value=>value.replace(/[\D]+/g',)} onChange
{
设温度=值+“”;
temp=临时替换(/([0-9]{2})$/g,“,$1”);
如果(温度长度>6){
temp=temp.replace(/([0-9]{3}),([0-9]{2}$)/g,“.$1,$2”);
返回温度;
}
}}
解析器={value=>value.replace(/[\D]+/g',)}
onChange={handleChange}
/>
InputNumber上缺少onChange处理程序
编辑
在您的示例中,您正在为输入提供显式值,如果您这样做,您必须有某种机制来更改它,这就是为什么您应该添加onChange处理程序的原因
另一种方法是使用非受控输入,您不跟踪输入值的当前状态,而是可以通过ref访问它,在需要时获取值
这两种方法都是有效的,您应该选择满足您需要的方法。您缺少InputNumber上的onChange处理程序 编辑 在您的示例中,您正在为输入提供显式值,如果您这样做,您必须有某种机制来更改它,这就是为什么您应该添加onChange处理程序的原因 另一种方法是使用非受控输入,您不跟踪输入值的当前状态,而是可以通过ref访问它,在需要时获取值
这两种方法都是有效的,你应该选择一种满足你需要的方法。嗨,@Mario Nikolaus我使用的是React UI库Ant设计,它在引擎盖上有这种方法。我想是的。你肯定需要它,即使这里的每个示例都使用onChange处理程序,甚至是官方代码笔,我测试的官方代码笔示例没有onChange方法和工作。我注意到示例中的函数仅用于在控制台中显示值。编辑后阅读该部分,它解释了您的confusion@MrCaji如果这解决了您的问题,请将此标记为answerHi,@Mario Nikolaus我使用的是React UI库Ant设计,它在引擎盖下有此方法。我想是的。你肯定需要它,即使这里的每个示例都使用onChange处理程序,甚至是官方代码笔,我测试的官方代码笔示例没有onChange方法和工作。我注意到示例中的函数仅用于在控制台中显示值。编辑后阅读该部分,它解释了您的confusion@MrCaji如果这解决了您的问题,请将其标记为应答您的解析器似乎工作不正常。用于解析逗号和点的正则表达式是错误的,例如,您需要调用
formatToParts
并从中获取小数,而不是将数字格式obj传递给正则表达式。@EJ105我不理解您的想法,因为我是正则表达式的新手。你能帮我使用密码吗?请注意,您的解析器似乎工作不正常。用于解析逗号和点的正则表达式是错误的,例如,您需要调用formatToParts
并从中获取小数,而不是将数字格式obj传递给正则表达式。@EJ105我不理解您的想法,因为我是正则表达式的新手。你能帮我使用密码吗?请
<InputNumber
name="topText"
style={{
width: 400,
marginRight: "1rem"
}}
formatter={value => {
let temp = value+'';
temp = temp.replace(/([0-9]{2})$/g, ",$1");
if(temp.length > 6 ) {
temp = temp.replace(/([0-9]{3}),([0-9]{2}$)/g, ".$1,$2");
return temp;
}
}}
parser={value => value.replace(/[\D]+/g,'')}
onChange={handleChange}
/>