React组件中的onChange事件验证错误

时间:2018-06-11 13:47:58

标签: javascript reactjs

看起来非常明确,但我在React组件中的验证无法按预期工作。显然,它应该只传递1到10之间的整数,但包括范围数字在内的任何输入都会触发else方法的handleInput部分:

class FormToRefresh extends React.Component {
  constructor(props) {
    super(props)
    this.state = {value: 1}
    this.handleInput = this.handleInput.bind(this)
  } 

  handleInput(e) {
    let input = e.target.value
    const inputRange = [1,2,3,4,5,6,7,8,9,10]
    if(inputRange.includes(input)) {
      this.setState({value: input}) 
    }
    else {
      alert("Wrong input")
      this.setState({value: this.state.value})  
    }
  }

  render() {
    return (
      <div>
      <form onSubmit={this.handleSubmit}>            

      <input 
        type="text" 
        value={this.state.value} 
        onChange={this.handleInput} 
      />

      <button type="submit">
        Refresh
      </button>

      </form>
    </div>        

    )
  }
}

2 个答案:

答案 0 :(得分:3)

因为这个原因:

quiet: false

数组中的数组,但const inputRange = [1,2,3,4,5,6,7,8,9,10] if(inputRange.includes(input)) 将是一个字符串,因为它是输入框的内容。试试这个:

e.target.value

首先应将输入转换为整数。并记得做错误处理

答案 1 :(得分:2)

dplyr::recode()节点上的

value字段会返回input

中的值

因此,尝试将字符串解析为数字:

String