如果在反应js中输入不为空,请选择另一个选项

时间:2016-08-16 08:47:22

标签: javascript reactjs

我的反应组件中有一些代码:

<legend>Data:</legend>
          <Input type="text" name="Payment" id="Payment" className="validate[required, custom[integer], max[9999999999999]]" placeholder="2000" addonBefore="Payment" addonAfter="cents" />
          <Input type="text" name="Value" id="Value" className="validate[required, custom[integer], max[9999999999999]]" placeholder="3500" addonBefore="Value" addonAfter="cents" />
          <Input type="select" label="Some code" placeholder="placeholder" >
            <option value="0">option1</option>
            <option value="1">option2</option>
            <option value="2">option3</option>
          </Input>
          <Input type="select" label="Some category" placeholder="Category">
            <option value="0">category1</option>
            <option value="1">category2</option>
            <option value="2">category3</option>
            <option value="3">Category4</option>
            <option value="4">Category5</option>
          </Input>
          <Input type="select" label="Another code" placeholder="some code">
            <option value="1">code1</option>
            <option value="2">code2</option>
            <option value="3">code3</option>
            <option value="4">code4</option>
            <option value="5">code5</option>
            <option value="8">code6</option>
            <option value="7">code7</option>
          </Input>
      </fieldset>

如果输入付款不为空,我如何在“某些类别”中更改选择选项?我的意思是,如果用户在“付款”输入中输入一些文本(例如),则必须将选项从默认更改为第二或第三。还有其他文字输入和选择选项?我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:2)

您必须完成所有输入 - controlled
将输入值保存到组件的state,并根据这些值执行呈现不同options

所需的逻辑
  <select value={this.state.myValue} onChange={this.handleChange}>
    <option value="A">Apple</option>
    <option value="B">Banana</option>
    <option value="C">Cranberry</option>
  </select>

您需要使用value属性而非defaultValue来进行选择 - 受控
阅读docs

中的更多内容

答案 1 :(得分:0)

好吧,我来到这个代码(它为我工作并解决了我的问题):

state : {
  text: '',
  select: 0
},
handleChange({target: {id, value}}) {
  const data = {[id]: value};
  if (id == 'Payment' && value.length != 0) {
    data.select = 4;
  } else if (id == 'Value' && value.length != 0){
    data.select = 2;
  } else {
    data.select = 0;
  }
  this.setState(data);
},
/* some code in render fucntion for our form*/ 

也许这对某人有帮助。