$(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中的一个已知问题吗?我没有找到任何关于它的信息?可能的解决方法?谢谢
$(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中的一个已知问题吗?我没有找到任何关于它的信息?可能的解决方法?谢谢
根据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。
尝试
对于单选
var selectedValue = $(this).val();
您只需要在上面写下即可获得选定的值。
对于多选它应该是
var result = "";
$('#idselect option:selected').each(function(i, item)
{
result += $(this).val() + ", ";
});
这是一种预期的行为,因为您要求的是选项的值而不是元素本身。
不要把事情复杂化。
$(this).find('select').each(function() {
var val = $(this).val();
});