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

Posted

技术标签:

【中文标题】为啥我无法获得 <select> 字段的正确值?【英文标题】:Why I can not get the correct value of my <select> field?为什么我无法获得 <select> 字段的正确值? 【发布时间】:2011-08-19 09:37:36 【问题描述】:

在我的 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 都是我在帖子中的错字,在我的代码中我确实使用了selectionc.val()

我的观点是如何从 jQuery change() 函数中获取当前选择值。请不要再讨论我的错字。谢谢。

【问题讨论】:

您在 c.change(...) 中使用的汽车变量来自哪里?我在您发布的代码中的任何地方都看不到它声明。 Alo,您声明了一个变量 Selection,但稍后使用 selection - 据我所知,javascript 区分大小写。 我看到的第一件事:var Selection; 应该是var selection; 这实际上可能是你的问题。另一件事:console.log 是否又被调用了? 您应该使用c.val(),而不是car.val()。变量car 不存在。 嗨,car.val() 是我的错字,我确实在我的代码中使用了 c.val()。对不起。 【参考方案1】:

当您应该使用c 时,您正在查看carcar 没有 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/

【讨论】:

"selection" 是我的错字,"car.val()" 也是。我确实使用“选择”和“c.val()”。我的观点是如何在 .change() 函数之外获取更新的值。您的示例没有回答我的问题...因为您在 jQuery change() 函数中发出警报(选择)。 一旦change 事件触发,selection 将设置为(在此事件范围之外),当前选定的值为#car【参考方案2】:

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

var selection;

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

另外,你应该定义你的汽车变量,像这样:

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

【讨论】:

请查看我更新的帖子。 “Selection”和“car.val()”都是我的错字。在我的真实代码中,我确实使用了“selection”和“c.val()”

以上是关于为啥我无法获得 <select> 字段的正确值?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我无法获得 select2 下拉列表的先前值

为啥我无法获得对地图中某个值的引用? [复制]

从 HTML 生成带有 <SELECT> 表单字段的 PDF 总是显示多行下拉菜单

为啥我无法获得 /comments/new.html.erb?

为啥select 子句中的字段一定要出现在Groupby子句中

为啥我的 jQuery 没有返回给我 <select> 的值