javascript - 用点替换逗号
问题描述
我试图在输入类型“文本”中用“点”替换“逗号”。目前在我的代码中,我限制了我的模式"^([0-9]*[.])?[0-9]*$"
,但我想允许用户输入“逗号”(,
)但自动替换为“句号”(.
)
<input
type="text"
ref="double"
pattern="^([0-9]*[.])?[0-9]*$"
onKeyUp={this.validateKeyEvents.bind(this)}
value={this.state.value}
onChange={this.inputChanged.bind(this)}
/>
validateKeyEvents(event){
console.log("event occured" + event.charCode);
var keyVal = event.charCode;
if(keyVal == 188)
{
console.log("comma");
event.preventDefault();
var UserInput = ReactDOM.findDOMNode(this.refs.double).value;
UserInput = UserInput.replace(/,/g, ".");
return true;
}
else if(keyVal == 8 || keyVal == 46)
return true;
else if(keyVal == 0)
return true;
else if (keyVal == 9 || keyVal == 13 || keyVal == 110 || keyVal == 190)
return true;
else if(keyVal >=48 || keyVal <= 57)
return true;
else if(keyVal >= 96 || keyVal <= 105)
return true;
else if(keyVal >=35 || keyVal <=40)
return true;
else
return false;
}
inputChanged(event) {
var value = event.target.validity.valid
? event.target.value
: this.state.value;
this.setState(
{
value: value
});
}
解决方案
您可以简单地将替换的字符串作为值传递input
:
<input
value={this.state.value.replace('.', ',')}
onChange={e => this.setState({value: e.target.value})} ... />
只需更改您的模式以使用逗号而不是点。
pattern="^([0-9]*[,])?[0-9]*$"
推荐阅读
- python - 在文本文件中堆叠多列
- output - 用 expect_out(buffer) 消失输出
- node.js - Nodejs Crypto 到 Swift commonCrypto
- javascript - 使用 NodeJs 在运行时延迟加载 UMD 文件
- spring - 从 spring 迁移到 spring boot(spring security auth 不起作用)
- php - if 语句中的 $_session 减慢了 extract($row)
- javascript - 未捕获的 TypeError: $(...).DataTable 不是 PHP 中的函数
- r - R - 在一行中合并相同元素的信息
- django - Django select_related 没有按预期工作
- sql - Oracle 12 - 在分区上使用 row_number() 重置序列列