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

标签 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时,它会添加新的文本框,但值不会出现在文本框中。当用户更改它时,我可以保存值吗?

最佳答案

您错过了输入元素中的 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});               
        }

关于javascript - 使用reactjs保存动态添加的多个文本框值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37938878/

相关文章:

css - 修改div鼠标悬停时的图像

reactjs - 我可以在 Material UI <Menu> 组件中包含 <Hidden> 菜单项吗?

javascript - 错误 : Blocked due to MIME type (“text/html” ) mismatch (X-Content-Type-Options: nosniff)

JavaScript 以不同方式调用函数

javascript - 是否可以在 JavaScript 中的对象声明内执行循环

javascript - 如何使用 webpack 将文件复制到分发文件夹?

ios - 是否建议将 React Native 应用程序的核心逻辑托管在云中?

javascript - 将脚本放在正文之后是否有助于页面加载速度?

javascript - JQuery 遍历数组不返回正确的值

reactjs - 警告 : Accessing PropTypes via the main React package is deprecated. 请改用 npm 中的 prop-types 包