为什么我无法获得<select>字段的正确值?</select>

时间:2011-05-05 13:28:25

标签: javascript jquery javascript-events jquery-selectors javascript-framework

在我的 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);

当页面首次加载时,初始选择是宝马,我得到控制台输出“宝马”这很好,然后我选择“ TOYOTA “,但两个控制台输出仍然是”宝马“。

如何获得最新信息  选择改变后,jQuery .change(...)函数之外的选择值是什么?

_ __ _ __ _ __ 错字已修复 __ _ < / EM> __ _ _

car.val()Selection都是我在帖子中的拼写错误,在我的代码中我使用了selectionc.val()

我的观点是如何将当前选择值排除在jQuery change()函数之外。请不要再讨论我的拼写错误。谢谢。

2 个答案:

答案 0 :(得分:4)

当您使用car时,您正在查看ccar没有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 :(得分:1)

您应该使用小写来定义var选择,如下所示:

var selection;

为什么呢? Javascript区分大小写,因此,敏感和敏感是不同的变量。

另外,您应该定义汽车变量,如下所示:

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