【问题标题】:Input field is not working输入字段不工作
【发布时间】:2017-08-21 22:53:26
【问题描述】:

当我使用state 变量作为input 字段的值时,第二个input 字段不起作用。

代码如下:

<input 
    type="text" 
    className="form-control" 
    placeholder="mobileNumber" 
    onChange={this.handleLoginMobileNumber} 
    onKeyUp={this.handleLoginMobileNumber} 
    value={this.state.loginMobileNumber} 
/>

<input 
    type="text" 
    className="form-control" 
    placeholder="Passcode" 
    maxLength="4" 
    value={this.state.loginPasscode}
/>
<br/>
<button 
    className="btn btn-large btn-primary medata-login-form-input medata-login-form-submit-button" 
    onClick={this.submitLogin}>
    Log in
</button>

帮帮我,谢谢。

【问题讨论】:

  • 可以展示整个组件代码吗?
  • 而不是 value="" 使用 defaultValue="" 并且它必须工作

标签: forms reactjs input jsx


【解决方案1】:

问题是,您正在使用Controlled Component,而您忘记定义onChange 方法并使用密码字段更新state 值,因为该密码字段是只读

检查这个例子:

class App extends React.Component{
  constructor(){
     super();
     this.state = {
          loginMobileNumber: '', 
          loginPasscode: ''
     }
  }
  
  handleLoginMobileNumber(e){
     this.setState({loginMobileNumber: e.target.value})
  }
  
  loginPasscode(e){
     this.setState({loginPasscode: e.target.password})
  }
  
  render(){
      return(
         <div>
            <input 
                type="text" 
                className="form-control" 
                placeholder="mobileNumber" 
                onChange={this.handleLoginMobileNumber.bind(this)}
                value={this.state.loginMobileNumber} 
            />

            <input 
                type="password" 
                className="form-control" 
                placeholder="Passcode" 
                maxLength="4" 
                value={this.state.loginPasscode}
                onChange={this.loginPasscode.bind(this)}
            />
         </div>
      )
   }
}

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'/>

【讨论】:

  • 知道了,谢谢@Mayank Shukla
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-11
  • 1970-01-01
  • 1970-01-01
  • 2020-11-19
  • 2021-03-26
  • 1970-01-01
相关资源
最近更新 更多