Jquery.change功能不触发
问题描述:
我只是想知道为什么这个脚本不工作?我试图在SELECT MULTIPLE中获取所选(一个或多个项目)选项的值。什么不见了?Jquery.change功能不触发
感谢
<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>
答
你需要用的代码在$(document).ready()
。在将更改处理程序绑定到元素之前,jQuery ready()处理程序将等待装入文档元素的单元。同时使用选择多个它将返回一个选定项目的数组。因此,您需要在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);
});
});
答
请确保使用$(document).ready()
作为脚本出现在选择框之前。还请确保指定脚本类型,<script type="javascript">
,当类型未正确识别时,某些浏览器不喜欢它。
答
你可能只是这样做 -
$(document).ready(function() {
$('#ooo').change(function() {
alert($('#ooo').val());
});
})
jQuery的val
功能将多个选择框会自动选择返回值元素的逗号分隔的字符串。您应该将$(document).ready
函数添加到您的代码中,以确保click
事件可以成功绑定。
好的,谢谢你的作品。现在如果我的价值是一个数字,我该如何添加这些数字?我试过'foo + = parseInt(选择);'但它似乎只是回到我的第一个数字......为什么? – Joel
首先不要忘记'parseInt(选中,10)'秒的基数是什么意思“它似乎只是返回第一个数字?”只有一个号码被选中? –
是不是可选的?无论如何,即使以radix = 10作为值,它仍然只读取所选的第一个项目。在我的例子中,如果我选择项目2和3,我的选择总数应该是5.现在它给了我2任何想法? – Joel