通过名称标签和jQuery获取选择框的选定值

6
我有一个像这样的表单:
<label>Select country</label>  
    <select name="country">
        <option value="IND" selected="selected">India</option>
        <option value="MY">Malaysia</option>
        <option value="US">United states</option>
    </select>
</label>

我希望能够使用jquery获取所选国家的值。
这是我的jquery代码,我的jquery版本是jquery-1.10.1.js。
alert($('select[name="country"]').find(":selected").val());
alert($('select[name="country"] option:selected').val());

我不喜欢通过ID或class来调用选择器。提前感谢。
我无法为国家选择框编写onChange事件。 我需要在日期输入字段(followup_date)模糊时执行ajax请求。
$('#followup_date').change(function(e) {

        if($(this).val()!='')
        {
            //$('.tmslot').not(this).attr('checked', false);        
            var slot = $(this).val();
            var country_id = $('select[name="country"] option:selected').val();

我的问题是我得到了 undefined 作为 country_id 的值。


1
你需要这个:$('select[name="country"]').val(); - priya786
2
alert($('select[name="country"]').val()); 应该没问题 - http://jsfiddle.net/arunpjohny/sof2pjbs/2/ - Arun P Johny
这对我有效 $('select[name="country"]').find(":selected").val(); - mgamon
4个回答

11

使用.val()方法时应该针对select元素而不是选中的option元素:

$('select[name="country"]').on('change', function(){    
    alert($(this).val());    
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<select name="country">
        <option value="IND" selected="selected">India</option>
        <option value="MY">Malaysia</option>
        <option value="US">United states</option>
    </select>


Tim,非常感谢你的时间。但是,我无法为选择框编写onChange事件。我需要在输入字段失去焦点时执行ajax请求。 - chandoo
1
@chandoo 非常欢迎!请随意将我的答案标记为已接受 :) 这里的 on('change') 只是为了举例说明主要思路 - 使用 $('select[name="country"]').val() 来获取 select 元素的值。 - Timur Osadchiy

5
根据文档,
.val() 方法主要用于获取表单元素(如input、select和textarea)的值。对于 select 元素,在未选中任何选项时返回 null,在至少选择一个选项且可以选择多个选项时,返回包含每个选中选项值的数组,因为 multiple 属性存在。
您只需要使用含有 select 元素的 jQuery 对象与 .val() 结合起来即可获取所选选项的值:
$('select[name="country"]').val()

@KishoreKumar:你能在fiddle中重现这个问题吗? - Milind Anantwar

3
如果您想获取选项:
警报($('select [name = country]).find(':selected').text());

这将为您提供文本,即马来西亚,而不是值MY。 - Winter MC

2

你可能需要这个演示在此

alert($('select[name="country"]').val());
$('select[name="country"]').change(function(){    
    alert($(this).val());    
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接