Получить значение элемента select в событии с помощью чистого JavaScript

Я хочу получить значение элемента select при нажатии на элемент select! Я хочу сделать это без в HTML.

Я хотел бы достичь этого без jQuery. Я не хочу включать фреймворк jQuery на этот сайт, когда этот крошечный скрипт-единственное, что мне нужно.

var select_element = document.getElementById('product-form-user-enquiry-type');

select_element.onchange = function(e){
    if (!e)
        var e = window.event;
    var svalue = select_element.value;
    alert( svalue );
}
if ( select_element.captureEvents ){
    select_element.captureEvents(Event.CHANGE);
}

на select_element.value; содержит пустую строку. Как мне это сделать?

3 ответов


решение, которое будет работать со всеми браузерами (включая IE8):

var select_element = document.getElementById('product-form-user-enquiry-type');

select_element.onchange = function() {
    var elem = (typeof this.selectedIndex === "undefined" ? window.event.srcElement : this);
    var value = elem.value || elem.options[elem.selectedIndex].value;
    alert(value);
}​

​document.getElementById('test').onchange = function() {
    alert(this.options[this.selectedIndex].val​​​ue);
};​

делает вышеуказанное работу?

Edit:

отредактировано, чтобы отразить ваш select id и т. д.

var select_element = document.getElementById('product-form-user-enquiry-type');

select_element.onchange = function(e){
    if (!e)
        var e = window.event;
    var svalue = this.options[this.selectedIndex].value;
    alert( svalue );
}​

см. его работу по адресу:http://jsfiddle.net/gRoberts/4WUsG/


.onchange = function() { ... } похоже, перезаписывает другие обработчики, поэтому я использую addEventListener ("изменить", функция () {... })