使用reactjs保存动态添加的多个文本框值

时间:2016-06-21 08:09:20

标签: javascript reactjs

我希望在更改文本值时保存文本框的值..

     var MySelect = React.createClass({
                getInitialState: function() {
                    return {
                        label: '' ,
                        options:  [{ value: '', type: 'text' },
                            { value: '', type: 'text' },
                            { value: '', type: 'text' }]
                    }
                },
                change: function(event) {
                    this.state.label = '';
                    this.setState({value: event.target.value});  
                },  
render: function() {
return(
                        <div>
                          <p><b>Field type</b></p>
                            <select className="inputControl" id="field_control" onChange={this.change} value={this.state.value}>                        
                                <option value="text">Textbox</option>
                                <option value="number">Number</option>
                                <option value="checkbox">Checkbox</option>
                                <option value="radio">Radio</option>
                                <option value="textarea">Textarea</option>
                                <option value="select">Dropdown</option>
                                <option value="date">Date</option>
                                <option value="email">Email</option>
                            </select>
                        <br />
                        <br />
                        <div id="selectOption">
                            <p>
                              <b>Choices</b>
                            </p>
                            <div id="SelectChoice" onChange={this.fillSelectOption}>
                                {
                                   this.state.options.map(function(opt, i) {                                        
                                      return <input type={ opt.type } className="inputControl space" key={i} onKeyup={this.saveValue}/>
                                   })
                                }
                                <i className="fa fa-plus-circle icon add" title="Add another choice" onClick={this.addOption}></i>
                            </div>
                            <div id="CheckboxChoice" style={{display: 'none'}}>
                            </div>
                            <div id="RadioChoice" style={{display: 'none'}}>
                            </div>
                        </div>                  
                     </div>
                );
            },
            addOption: function(e) {                                   
               this.state.options.push({"value":'', "type":'text'});
               this.forceUpdate();               
            }
});

我动态添加文本框,但是当我点击fa fa-plus-circle icon add时,它会添加新文本框,但值不会出现在文本框中。我可以在用户更改时保存值吗?

1 个答案:

答案 0 :(得分:0)

您错过了input元素中的value属性。

this.state.options.map(function(opt, i) {                                        
  return <input type={ opt.type } value={opt.value} className="inputControl space" key={i} onKeyup={this.saveValue}/>
 })

另外,我发现你在addOption函数中直接改变状态。 相反,你应该这样做。

        addOption: function(e) { 
            let options = this.state.options;                   
            options.push({"value":'', "type": 'text'});
           this.setState({options: options});               
        }