4
$(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中的一个已知问题吗?我没有找到任何关于它的信息?可能的解决方法?谢谢

4

3 回答 3

5

根据http://api.jquery.com/val/上的文档

.val()仅适用于

.val() 方法主要用于获取输入、选择和文本区域等表单元素的值。在<select multiple="multiple">元素的情况下, .val() 方法返回一个包含每个选定选项的数组;如果未选择任何选项,则返回 null。

为了实现你想要的,你可以迭代select并调用.val()它,你的原始代码实际上是调用val()on option,而不是实际的select元素,这就是它不起作用的原因。

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

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

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

.val() 方法主要用于获取输入、选择和文本区域等表单元素的值。<select multiple="multiple">元素的情况下, .val() 方法返回一个包含每个选定选项的数组;如果未选择任何选项,则返回 null。

于 2012-04-24T10:36:55.027 回答
0

尝试

对于单选

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

您只需要在上面写下即可获得选定的值。

对于多选它应该是

var result = ""; 
$('#idselect  option:selected').each(function(i, item)
{     
   result += $(this).val() + ", "; 
}); 
于 2012-04-24T10:35:12.900 回答
0

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

不要把事情复杂化。

$(this).find('select').each(function() {
   var val = $(this).val();
});
于 2012-04-24T10:43:40.533 回答