对javascript有点新鲜。这个问题可能听起来有些过于愚蠢,但我无法弄明白为什么以下内容在IE中不起作用并且在firefox中工作..
<select multiple="multiple">
<option value="tx" onClick="alert('tx');">Texas</option>
<option value="ak" onClick="alert('ak');">Alaska</option>
<option value="ca" onClick="alert('ca');">California</option>
<option value="ws" onClick="alert('ws');">Washington</option>
<option value="tn" onClick="alert('tn');">Tennessee</option>
</select>
IE中没有出现警报(我正在使用IE8)。但它适用于firefox !!!!!
答案 0 :(得分:6)
According to w3schools,选项标记支持onclick属性。我尝试使用IE6的底部,这似乎并非如此。
最简单的方法是:
<select multiple="multiple" onchange="alert(this.value);">
<option value="tx">Texas</option>
<option value="ak">Alaska</option>
<option value="ca">California</option>
<option value="ws">Washington</option>
<option value="tn">Tennessee</option>
</select>
这不完全是你所追求的,但应该非常接近。
<强> EDITS 强>
这需要更多的工作:
<select multiple="multiple" onchange="
switch (this.value){
case 'tx': funcOne(); break;
case 'ak': funcTwo(); break;
etc...
}
">
<option value="tx">Texas</option>
<option value="ak">Alaska</option>
<option value="ca">California</option>
<option value="ws">Washington</option>
<option value="tn">Tennessee</option>
</select>
此时将onchange包装到js文件中的函数中是合适的,而不是将其嵌入到html中。
答案 1 :(得分:5)
我会使用onchange事件:
<select multiple="multiple" onchange="alert(this.options[this.selectedIndex].value)">
<option value="tx">Texas</option>
<option value="ak">Alaska</option>
<option value="ca">California</option>
<option value="ws">Washington</option>
<option value="tn">Tennessee</option>
</select>
虽然Daniel Mendel的解决方案完全有效。
答案 2 :(得分:2)
这是因为当您在选择字段中选择新选项(猜测)时,IE不会注册单击事件。相反,您应该使用onBlur事件(并将代码放入您的javascript中),如此(假设是jQuery):
<script type='text/javascript'>
$(document).ready(function(){
$('select#state').bind('blur', function(){
alert(this.val());
});
});
</script>
<select id='state' multiple="multiple">
<option value="tx">Texas</option>
<option value="ak">Alaska</option>
<option value="ca">California</option>
<option value="ws">Washington</option>
<option value="tn">Tennessee</option>
</select>