<option>上的val()返回文本而不是ie7 </option>中的值

时间:2012-04-24 10:32:58

标签: jquery

$(this).find('select option:selected').each(function (i, val) {

    var selectedValue = $(val).val(); //this returns the text from the option instead of the value
});

这是ie7中的已知问题吗?我没有找到任何关于它的信息?可能的解决方法?感谢

3 个答案:

答案 0 :(得分:5)

根据http://api.jquery.com/val/

的文件

.val()仅适用于

  

.val()方法主要用于获取表单元素的值   例如input,select和textarea。对于<select multiple="multiple">元素,.val()方法返回一个数组   包含每个选定的选项;如果未选择任何选项,则返回   空。

要实现您想要的效果,您可以遍历select并在其上调用.val(),原始代码有效地在val()上调用option,而不是实际的select元素,这就是为什么它不起作用。

$(this).find('select').each(function (i, val) {

    var selectedValue = $(this).val(); 
});

val()还有一个额外好处,即在multiple选择的情况下能够返回一组值:(强调我的)

  

.val()方法主要用于获取表单元素的值   例如input,select和textarea。 对于<select multiple="multiple">元素,.val()方法返回一个数组   包含每个选定的选项;如果未选择任何选项,则返回   空。

答案 1 :(得分:0)

尝试

单选

var selectedValue = $(this).val();

你只需要在上面写一行就可以获得所选择的值。

对于multislect,它应该是

var result = ""; 
$('#idselect  option:selected').each(function(i, item)
{     
   result += $(this).val() + ", "; 
}); 

答案 2 :(得分:0)

这是一种预期的行为,因为您要求选项的值而不是元素本身。

不要过于复杂化。

$(this).find('select').each(function() {
   var val = $(this).val();
});