reactjs获取选定选项自定义属性
我有一个生成的select,我希望从selected选项中获得值+一个自定义属性,到目前为止,我只得到了值reactjs获取选定选项自定义属性,reactjs,Reactjs,我有一个生成的select,我希望从selected选项中获得值+一个自定义属性,到目前为止,我只得到了值 var ServiceProviderList = React.createClass({ getInitialState: function(){ return { service_provider_list: this.props.service_provider_list, quickbooks_vendor
var ServiceProviderList = React.createClass({
getInitialState: function(){
return {
service_provider_list: this.props.service_provider_list,
quickbooks_vendor_id: '',
currency: ''
};
},
handleChange: function(e){
this.props.onUpdate(e);
},
render: function(){
var serviceProviderNodes = this.props.service_provider_list.map(function(item, index){
return(
<option key = {item.service_provider_id} value={item.quickbooks_vendor_id} data-currency={item.currency}>{item.company_name}</option>
);
}, this);
return(
<select value={this.props.quickbooks_vendor_id} data-currency={this.state.currency} id="quickbooks_vendor_id" name="quickbooks_vendor_id" required="required" onChange={this.handleChange}>
<option value=""></option>
{serviceProviderNodes}
</select>
);
}
});
您可以使用以下命令访问自定义属性:
getAttribute('attributename')
我尝试了这个方法,但是我一直得到一个空变量,我在代码的其他地方做错了什么吗?当你检查你的DOM时,数据货币是否在呈现中有一个值?当我执行console.log(e)时,单个选项有一个货币值,而不是select itselt,它会打印整个select元素。
...
handleInput: function(e){
this.state.invoice[e.target.id] = e.target.value;
this.props.onInvoiceInput(e.target.id, e.target.value);
},
...
render: function(){
...
<div className="formRow">
<label>Service Provider: </label><br /><ServiceProviderList id="quickbooks_vendor_id" service_provider_list={this.state.service_provider_list} onUpdate={this.handleInput} quickbooks_vendor_id={this.state.invoice.quickbooks_vendor_id} currency={this.state.invoice.currency}/>
</div>
handleInvoiceInput: function(id, val){
this.state.invoice[id] = val;
this.setState({invoice: this.state.invoice});
}
handleInput: function(e){
// e.target.getAttribute('data-currency'); will contain the selected currency.
this.state.invoice[e.target.id] = e.target.value;
this.props.onInvoiceInput(e.target.id, e.target.value);
},