[英]replace comma with dot on fly
我試圖用輸入類型“文本”中的“點”替換“逗號”。 當前,在我的代碼中,我限制了模式"^([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]*$"
因此,我進行了以下更改:
在我添加的validateKeyEvents中
if(keyVal == 188)
{
return true;
}
和輸入
<input
type="text"
pattern="^([0-9]*[.?,])?[0-9]*$"
onKeyUp={this.validateKeyEvents.bind(this)}
value={this.state.value.replace(',','.')}
/>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.