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); 
    }); 
}); 
+0

好的,谢谢你的作品。现在如果我的价值是一个数字,我该如何添加这些数字?我试过'foo + = parseInt(选择);'但它似乎只是回到我的第一个数字......为什么? – Joel

+0

首先不要忘记'parseInt(选中,10)'秒的基数是什么意思“它似乎只是返回第一个数字?”只有一个号码被选中? –

+0

是不是可选的?无论如何,即使以radix = 10作为值,它仍然只读取所选的第一个项目。在我的例子中,如果我选择项目2和3,我的选择总数应该是5.现在它给了我2任何想法? – Joel

请确保使用$(document).ready()作为脚本出现在选择框之前。还请确保指定脚本类型,<script type="javascript">,当类型未正确识别时,某些浏览器不喜欢它。

你可能只是这样做 -

$(document).ready(function() { 
    $('#ooo').change(function() { 
     alert($('#ooo').val()); 
    }); 
}) 

jQuery的val功能将多个选择框会自动选择返回值元素的逗号分隔的字符串。您应该将$(document).ready函数添加到您的代码中,以确保click事件可以成功绑定。

演示 - http://jsfiddle.net/pNUQm/