ReactJS,调用两个函数onChange事件

时间:2018-03-27 14:59:17

标签: reactjs

我正在尝试在 onChange 事件中调用两个函数。

这是我的代码:

onChange(e){
   const re = /^[0-9\b]+$/;
   if (e.target.value == '' || re.test(e.target.value)) {
      this.setState({value: e.target.value})
   }
}

<input 
  type="text" 
  size="3" 
  defaultValue={ViewHelpers.toFixed(val1, 2)} 
  onChange={(e) => {
    this.handleValueChanges(this.props.valCols[i]);
    this.onChange
  }}
/>

我无法调用这两个函数

3 个答案:

答案 0 :(得分:0)

我认为你需要调用第二个函数(执行它):

<input 
  type="text" 
  size="3" 
  defaultValue={ViewHelpers.toFixed(val1, 2)} 
  onChange={(e) => {
    this.handleValueChanges(this.props.valCols[i]);
    this.onChange(e);
  }}
/>

答案 1 :(得分:0)

您可以在this.handleValueChanges处理程序中调用this.onChange。在您输入的onChange道具中,您需要绑定this.onChange并传入this.props.valCols[i]值:

onChange(value, e){
    this.handleValueChanges(value);
    const re = /^[0-9\b]+$/;
    if (e.target.value == '' || re.test(e.target.value)) {
        this.setState({value: e.target.value})
    }
}

<input 
    type="text"
    size="3" 
    defaultValue={ViewHelpers.toFixed(val1, 2)} 
    onChange={this.onChange.bind(this, this.props.valCols[i])}
/>

修改 如果您不想允许使用文字和数字,则应使用number输入而不是text输入:

<input 
    type="number"
    size="3" 
    defaultValue={ViewHelpers.toFixed(val1, 2)} 
    onChange={this.onChange.bind(this, this.props.valCols[i])}
/>

答案 2 :(得分:0)

第二个功能没有括号。你也错过了分号。

<input
  type="text"
  size="3"
  defaultValue={ViewHelpers.toFixed(val1, 2)}
  onChange={(e) => {
    this.handleValueChanges(this.props.valCols[i]);
    this.onChange();
 }}/>