2015-05-18 9 views
13

mam listy Wybierz komponent renderingu mój wybierz listę:Uzyskaj wybrany tekst opcji za pomocą polecenia js?

<form className="pure-form"> 
<select ref="selectMark" className="mark-selector" 
onChange={this.onChange}>{this.getOptions()} 
</select> 
</form> 

Mam metodę na składnik do tworzenia opcje:

metoda
getOptions: function() { 
    return this.props.renderProps.data.map(function (item) { 
     return <option key={item.value} value={item.value}>{item.label}</option>; 
    }.bind(this)); 

}, 

My onChange współpracuje z wartości:

onChange: function(event) { 
    var newValue = event.nativeEvent.target.value; 
    this.props.renderProps.onSaveCare(newValue); 
    this.setState({value: newValue}); 
    this.toggleEdit(); 
}, 

Czy istnieje sposób uzyskania tekstu opcji? To daje mi niezdefiniowana

event.nativeEvent.target.text; //undefined 

Odpowiedz

2

Tekst opcją jest po prostu własnością odpowiednich itemlabel.

W twoim przypadku, aby pobrać tekst wybranej opcji, można zrobić:

var selectedItem = this.props.renderProps.data.find(function (item) { 
    return item.value === event.target.value; 
}); 
selectedItem.label; 

Array.prototype.find jest częścią wniosku ES6. Podkreślenie lub zrób to już jako _.find method.

0

Jeśli jest to pojedynczy select, tutaj jest bardziej prosty sposób:

e.target.selectedOptions[0].text

+2

Nie działa na IE. Testowałem z IE 11. – ChillyPenguin

9

można uzyskać tekst opcji, zastępując w ten sposób:

event.nativeEvent.target.text; 

z tym:

event.target.options[event.target.selectedIndex].text 
+0

Doskonała odpowiedź. Dziękuję Ci. – niry

1

To zadziałało dla mnie

const {options, value} = e.target; 
console.log(options[value].innerHTML); 

Edycja: Właśnie zdałem sobie sprawę, że używałem pola "wartość" do przechowywania ID niektórych obiektów, od 0 do n. Chyba lepszym rozwiązaniem może być następująca:

const {options, selectedIndex} = e.target; 
console.log(options[selectedIndex].innerHTML); 
0

Oto co zrobić, aby odzyskać tekst z wybranej opcji w reagują js.

this.refs.selectMark[this.refs.selectMark.value].text 
Powiązane problemy