我只是想知道为什么这个脚本不起作用?我试图在SELECT MULTIPLE中获取所选(一个或多个项目)选项的值。缺少什么?
由于
<script type="text/javascript" src="js/jquery-1.7.1.min.js"></script>
<script>
$('#ooo').change(function() {
var foo = [];
$('#ooo :selected').each(function(i, selected){
foo += $(selected).valueOf();
});
alert(foo);
//$("#test").text(str);
});
</script>
</head>
<body>
<select name="test" id="ooo" multiple="multiple">
<option value="1">test</option>
<option value="2">bbbb</option>
<option value="3">aaaa</option>
<option value="4">xxx</option>
<option value="5">zzz</option>
</select>
答案 0 :(得分:2)
您需要将代码包装在$(document).ready()
中。在将更改处理程序绑定到元素之前,jQuery ready()处理程序将等待unitl加载文档元素。同样,使用select multiple它将返回一个选定项目的数组。因此,您需要在select元素的val()上运行.each()。
$(document).ready( function () {
$('#ooo').change(function() {
var foo = 0;
$.each($('#ooo').val(), function(i, selected) {
foo += parseInt(selected, 10);
});
alert(foo);
//$("#test").text(str);
});
});
答案 1 :(得分:0)
请确保使用$(document).ready()
,因为您的脚本位于选择框之前。另外,请确保指定脚本类型<script type="javascript">
,某些浏览器在未正确识别类型时不喜欢它。
答案 2 :(得分:0)
你可以这样做 -
$(document).ready( function () {
$('#ooo').change(function() {
alert($('#ooo').val());
});
})
jQuery val
函数将在多个选择框中自动返回逗号分隔的选定值元素字符串。您应该将$(document).ready
函数添加到代码中,以确保click
事件可以成功绑定。