Lebih
Hanya angka. Masukkan angka di React
Saya mencoba untuk mengecualikan minus dan plus dari input, tetapi itu salah:
handleChange(event) {
const value = event.target.value.replace(/\+|-/ig, '');
this.setState({financialGoal: value});
}
Merender kode input:
<input style={{width: '150px'}} type="number" value={this.state.financialGoal} onChange={this.handleChange}/>
27
3
Saya mencoba meniru kode Anda dan menyadari bahwa ada masalah pada React dengan
&<input type='number' />
. Untuk solusi, periksa contoh ini dan coba sendiri: https://codepen.io/zvona/pen/WjpKJX?editors=0010Anda perlu mendefinisikannya sebagai input normal (type=39;text') dengan pola untuk angka saja:
<input type="text" pattern="[0-9]*" onInput={this.handleChange.bind(this)} value={this.state.financialGoal} />
Dan kemudian untuk membandingkan validitas input:
const financialGoal = (evt.target.validity.valid) ? evt.target.value : this.state.financialGoal;
Peringatan terbesar pada pendekatan ini adalah ketika datang ke ponsel --> di mana keyboard tidak dalam format numerik tetapi dalam format alfabet normal.
satu baris kode
Untuk berhenti mengetik, gunakan
onKeyPress
bukanonChange
.Menggunakan
event.preventDefault()
di dalamonKeyPress
berarti MENGHENTIKAN event penekanan.Karena
keyPress
handler dipicu sebelumonChange
, anda harus memeriksa tombol yang ditekan (event.keyCode
), BUKAN nilai input saat ini (event.target.value
)Demo di bawah ini 👇 🏻