2017-07-04 17 views
0

我在窗体上有2个输入。我正在使用React.js和Twitter Bootstrap。如何使用bootstrap禁用输入反应?

预期的行为是:

当输入键入在在任一形式的输入字段,另一个输入字段应不接受任何输入(或是disabled)。

我从Bootstrap使用FormControl。

我应该如何在这个React.js/Bootstrap设置中实现这个功能?

+0

我有2 FormGroup {this.props.label}

+0

你是什么意思的禁用? –

+0

在第一个输入中使用'isDisabled',然后'onKeyDown'秒''true'状态 –

回答

0

您必须使用disabled属性并根据需要进行切换。如果我理解正确,你需要类似的东西。

class MyForm extends React.Component{ 
    constructor(){ 
    super(); 
    this.state = { 
     isFirstDisabled: false, 
     isSecondDisabled: false 
    } 
    } 
    onFirstFocus(){ 
    this.setState({ 
     isSecondDisabled: true 
    }); 
    } 
    onSecondFocus(){ 
    this.setState({ 
     isFirstDisabled: true 
    }); 
    } 
    onBlur(){ 
    this.setState({ 
     isFirstDisabled: false, 
     isSecondDisabled: false 
    }); 
    } 
    render(){ 
    return (
     <div> 
      <FormGroup> 
      <FormControl type="text" onFocus={() => this.onFirstFocus()} onBlur={() => this.onBlur()} disabled={this.state.isFirstDisabled}/> 
      <FormControl type="text" onFocus={() => this.onSecondFocus()} onBlur={() => this.onBlur()} disabled={this.state.isSecondDisabled}/> 
      </FormGroup> 
     </div> 
    ); 
    } 
} 

export default MyForm; 

https://codesandbox.io/s/yPBvrOvKg

+0

谢谢/如果我想在第一个输入有一些信息时取消输入?我有2个输入和按钮,我只能在一个输入中写入信息 –

+0

只需将'onFocus'更改为'onChange'并检查输入值的长度,如果> 0则禁用另一个输入,否则启用。 我已编辑[沙箱](https://codesandbox.io/s/yPBvrOvKg) – Andrew

+0

如果我有2个组件。我首先有方法 handleInputChange = inputId => event => {this.setState({inputId]:event.target.value }); }; 和在第二个组件我有道具this.state.input1和this.state.input2。 在这种情况下如何? –

相关问题