Javascript 在提交时获取表单数据
我是个新来的反应者,几个小时以来我一直面临着一个问题。即使我在谷歌或谷歌上发现了一些与我的问题相当的话题,我也无法解决它 我正在使用创建一个简单的表单。目前,我只有一个多选输入。我可以按预期使用它,但当我按“提交”时,我想检索所选的值。我尝试了Javascript 在提交时获取表单数据,javascript,forms,reactjs,Javascript,Forms,Reactjs,我是个新来的反应者,几个小时以来我一直面临着一个问题。即使我在谷歌或谷歌上发现了一些与我的问题相当的话题,我也无法解决它 我正在使用创建一个简单的表单。目前,我只有一个多选输入。我可以按预期使用它,但当我按“提交”时,我想检索所选的值。我尝试了refs,尝试了onChange,但没有成功onChange从未被激发,这可能也是另一个问题 var MultiSelect = React.createClass({ onLabelClick: function (data, event) {
refs
,尝试了onChange
,但没有成功onChange
从未被激发,这可能也是另一个问题
var MultiSelect = React.createClass({
onLabelClick: function (data, event) {
console.log(data, event);
},
render: function() {
var ops = []
this.props.categories.forEach(function(category) {
ops.push({ label: category.name, value: category.id });
});
return (
<div>
<Select
name = {this.props.name}
delimiter=" "
multi={true}
allowCreate={true}
placeholder = {this.props.label}
options={ops} />
</div>
);
}
});
var ProductForm = React.createClass({
submit: function () {
console.log("Categories: " + this.state.categories);
},
onCategoryChange: function(e) {
console.log("CATEGORY CHANGED !!!!!!")
this.setState({categories: e.target.value});
},
render: function () {
return (
<form onSubmit={this.submit}>
<MultiSelect label="Choose a Category" name="categories" categories={this.props.categories} onChange={this.onCategoryChange}/>
<button type="submit">Submit</button>
</form>
);
}
});
var MultiSelect=React.createClass({
onLabelClick:函数(数据、事件){
console.log(数据、事件);
},
render:function(){
var ops=[]
this.props.categories.forEach(函数(类别){
push({label:category.name,value:category.id});
});
返回(
);
}
});
var ProductForm=React.createClass({
提交:函数(){
log(“Categories:+this.state.Categories”);
},
onCategoryChange:函数(e){
console.log(“类别已更改!!!!!!!”)
this.setState({categories:e.target.value});
},
渲染:函数(){
返回(
提交
);
}
});
PS:data
categories
来自Rails控制器。我认为您的内部Select
组件应该从道具接收onChange
,该道具提供给MultiSelect
,假设您的目的是监听Select
组件上的更改
在MultiSelect
的render()
方法中尝试以下操作:
return (
<div>
<Select
name = {this.props.name}
delimiter=" "
multi={true}
allowCreate={true}
placeholder = {this.props.label}
options={ops}
onChange={this.props.onChange} />
</div>
);
返回(
);
旁注,我认为e.target.value
不会在onCategoryChange
中起作用,因为react select
不会发送标准事件 我相信您的内部Select
组件应该从props
中接收onChange
,该道具提供给MultiSelect
,假设您的目的是收听Select
组件上的更改
在MultiSelect
的render()
方法中尝试以下操作:
return (
<div>
<Select
name = {this.props.name}
delimiter=" "
multi={true}
allowCreate={true}
placeholder = {this.props.label}
options={ops}
onChange={this.props.onChange} />
</div>
);
返回(
);
旁注,我认为e.target.value
不会在onCategoryChange
中起作用,因为react select
不会发送标准事件 你检查过你的控制台或调试器了吗?你得到了什么错误?@hyphenbash控制台上没有显示日志(信息或错误)。观察到你没有在getInitialState方法中初始化你的类别和其他道具,因此没有指定初始状态。如果您提供初始状态,则还需要使用以下命令更改multiselect指令:categories={this.state.categories}您的类别已初始化的位置您是否检查了控制台或调试器,发现了哪些错误?@hyphenbash没有日志(信息或错误)控制台上显示的观察结果是,您尚未在getInitialState方法中初始化类别和其他道具,因此未指定初始状态。如果您提供初始状态,则还需要使用以下命令更改multiselect指令:categories={this.state.categories},其中类别已初始化