ReactJS中动态生成的输入文本字段值设置问题
Dynamically generated input textfield value setting issue in ReactJS
我在Reactjs中动态生成了文本字段。作为单独组件处理的输入文本字段。当我尝试在动态生成的文本字段中设置值时,我只得到最后一个输入值。所有其他输入值都被重写。我们可以使用SWITCH的情况,但如果我们添加更多的输入字段,那么代码就会变得非常大。
这里是我的样本代码:
var TextBox = React.createClass({
setTextState : function(event){
idval = event.target.id;
console.log(idval);
this.setState({idval : event.target.value}); //Here the issue
},
content: function() {
name1 = "task_1";
name2 = "task_2";
name3 = "task_3";
name4 = "task_4";
name5 = "task_5";
name6 = "task_6";
name7 = "task_7";
return [
<td> <TextInput type="text" /></td>, <td> <TextInput type="text" name={name1} id={name1} setText={this.setTextState}/></td>,
<td> <TextInput type="text" name={name2} id={name2} setText={this.setTextState}/></td>, <td> <TextInput type="text" name={name3} id={name3} setText={this.setTextState}/></td>,
<td> <TextInput type="text" name={name4} id={name4} setText={this.setTextState}/></td>, <td> <TextInput type="text" name={name5} id={name5} setText={this.setTextState}/></td>,
<td> <TextInput type="text" name={name6} id={name6} setText={this.setTextState}/></td>, <td> <TextInput type="text" name={name7} id={name7} setText={this.setTextState}/></td>
]
},
submitValue : function() {
},
render: function() {
return (<tr>{this.content()}<td><input type="button" onClick={this.submitValue}/></td></tr>);
}
});
除非您试图设置名为idval
的状态变量,否则这是不正确的:
this.setState({idval : event.target.value}); //Here the issue
也就是说,JavaScript不使用变量idval
的值作为对象的键;它使用字符串文字CCD_ 3。请参阅此代码以获取示例:
var val = "testing";
var a = { val: 1 };
document.write("a.testing: " + a[val]);
document.write("<br>");
document.write("a.val: " + a["val"]);
根据您的设置,您似乎更可能试图设置一个名为task_1
、task_2
等的状态变量。要做到这一点,您需要更像这样的东西:
setTextState : function(event){
idval = event.target.id;
console.log(idval);
var stateUpdate = {};
stateUpdate[idval] = event.target.value;
this.setState(stateUpdate);
},
如果"idval"变量的值正确,则setState()调用应按预期工作。您可以尝试复制currentState并附加到它,看看它是否有效。如果它不起作用,请张贴完整的代码。
setTextState : function(event){
idval = event.target.id;
console.log(idval);
newState = this.state;
newState.idval = event.target.value;
this.setState(newState);
},
相关文章:
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 当设置addFromAutocompleteOnly时,剩余文本将保留在输入字段中
- 使用jquery将输入字段转换为文本
- 如何从查询字符串中的输入字段发回文本
- 表单输入字段随着溢出的文本而增长
- 使用单个文本框向多个字段添加严格搜索
- 使用javascript提交表单并从字段/单选框/复选框/文本区域获取数据
- 使用jQuery的输入字段文本换行
- 向使用jQuery加载DOM后添加的字段添加不受限制的文本输入DatePickers
- 当用户单击按钮(在光标位置)时,在输入字段中添加一个文本字符串
- 如何根据文本长度立即显示和隐藏字段?-JQuery
- 当输入字段(文本框)有值时,选中/取消选中复选框
- 重置时输入字段文本css
- 将输入字段文本放入变量中并将其用于 jquery JSON get 请求
- 在 html 输入字段 (文本框) 中插入 javascript (jquery) 变量
- 搜索字段文本没有't在FF 3.6中显示
- 主干集合url操作与输入字段文本
- 如何大写输入字段文本的第一个字母,而键入javascript
- 如何使用angularjs在同一字段中键入时动态格式化输入字段文本
- 如何将输入字段(文本框)添加到使用jQuery动态创建的表中