2016-04-07 3 views
0

У меня есть сгенерированный выбор, я ищу, чтобы получить значение + пользовательский атрибут из выбранного параметра, до сих пор у меня есть только получение значения.responsejs получить выбранный вариант пользовательский атрибут

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> 
     ); 
     } 
    }); 

Родитель:

... 
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 (в корневой элемент):

handleInvoiceInput: function(id, val){ 
    this.state.invoice[id] = val; 
    this.setState({invoice: this.state.invoice}); 
} 

ответ

0

Вы можете получить доступ к пользовательский атрибут с помощью: getAttribute('attributename')

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); 
}, 
+0

Я пробовал это, но я продолжаю получать пустую переменную, не делаю ли я что-то не так в другом месте кода? – Mankind1023

+0

Когда вы проверяете свой DOM, имеет ли валюта данных значение в рендерном

+0

отдельные параметры имеют значение валюты, но не select itselt, когда я делаю console.log (e), он печатает весь элемент select. – Mankind1023

Смежные вопросы