Почему я не могу получить правильное значение моего поля <select>? - PullRequest
0 голосов
/ 05 мая 2011

В моем index.html у меня есть выпадающее меню выбора:

<select id="car">
    <option value="bmw">BMW</option>
    <option value="toyota">TOYOTA</option>
</select>

Мои JS:

var c = $('#car');

var selection;

c.change(function(){

    if(c.val()==='bmw'){

        selection = 'BMW';

    }else if(c.val()==='toyota'){

        selection = 'TOYOTA';

    }

});

console.log(c.val());
console.log(selection);

Когда страница загружена первой, первоначальный выбор BMW , и я получил консольный вывод " BMW ", что нормально, затем я выбираю " TOYOTA " , но два консольных выхода по-прежнему " BMW ".

Как получить ток значение выделения вне функции jQuery .change(...) после изменения выделения ??

_ __ _ __ _ __ опечатка исправлена ​​ __ _ __ _ _

car.val() и Selection - мои опечатка здесь в посте, в моем коде я использую selection и c.val().

Моя точка зрения заключается в том, как вывести текущее значение выбора из функции jQuery change (). Пожалуйста не обсуждайте мои опечатки . Спасибо.

Ответы [ 2 ]

4 голосов
/ 05 мая 2011

Вы смотрите car, когда вам следует использовать c.car не имеет метода val().

if(c.val()==='bmw'){

    selection = 'BMW';

} else if(c.val()==='toyota'){

    selection = 'TOYOTA';
}

Также обратите внимание, что var Selection; не будет той же переменной, что и selection (строчные буквы).


Лучшим подходом может быть:

c.change(function(){
    selection = c.find(":selected").text();
});

рабочий пример: http://jsfiddle.net/hunter/XespU/

1 голос
/ 05 мая 2011

Вы должны определить ваш выбор var в нижнем регистре, как это:

var selection;

Почему? Javascript чувствителен к регистру, поэтому Sensitive и чувствительные являются различными переменными.

Кроме того, вы должны определить свой автомобиль var, как это:

var selection;
c.change(function(){
    var car = $(this); //declare it
    if(car.val()==='bmw'){
        selection = 'BMW';
    }else if(car.val()==='toyota'){
        selection = 'TOYOTA';
    }
});
...