2017-03-28 73 views

回答

5

基本思路是:

使用controlled component(使用價值和輸入字段的OnChange屬性),以及裏面的onChange處理檢查輸入的值是否正確數量與否。僅當輸入的值是有效數字時更新狀態。

對於使用這種正則表達式/[0-9]+/g;

onChange處理將是:

onChange(e){ 
    const re = /^[0-9\b]+$/; 

    // if value is not blank, then test the regex 

    if (e.target.value == '' || re.test(e.target.value)) { 
     this.setState({value: e.target.value}) 
    } 
} 

工作例如:

class App extends React.Component{ 
 
    constructor(){ 
 
     super(); 
 
     this.state = {value: ''}; 
 
     this.onChange = this.onChange.bind(this) 
 
    } 
 
    
 
    onChange(e){ 
 
     const re = /^[0-9\b]+$/; 
 
     if (e.target.value == '' || re.test(e.target.value)) { 
 
     this.setState({value: e.target.value}) 
 
     } 
 
    } 
 
    
 
    render(){ 
 
    return <input value={this.state.value} onChange={this.onChange}/> 
 
    } 
 
} 
 

 
ReactDOM.render(<App/>,document.getElementById('app'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script> 
 

 
<div id='app'/>

+0

一個挖後它允許信士。 –

+0

對不起,在正則表達式中犯了錯誤,檢查更新後的解決方案,它會工作:) –

+0

謝謝!我可能永遠不會記住正則表達式,我會根據需要找到像這樣的答案然後繼續。儘管如此,你應該使用'==='。 –

相關問題