javascript Onclick in select 在 IE 中不起作用
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/3988938/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Onclick in select not working in IE
提问by chuckyCheese
Am a bit new to javascript. This question might sound a bit too silly, but I'm not able to figure it out why the following doesn't work in IE and works in firefox..
对 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>
The alert doesn't come up in IE (I'm using IE8). But it works in firefox!!!!!
警报没有出现在 IE 中(我使用的是 IE8)。但它适用于火狐!!!!!
采纳答案by Mark
According to w3schools, the option tag does support an onclick attribute. I tried with with bottom of the barrel IE6 and this doesn't seem to be the case.
根据 w3schools,选项标签确实支持 onclick 属性。我尝试使用桶底 IE6,但情况似乎并非如此。
The simplest way to do this would be:
最简单的方法是:
<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>
This is not exactly what you are after, but should be pretty close.
这不完全是您所追求的,但应该非常接近。
EDITS
编辑
It would just take more work:
这只需要更多的工作:
<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>
At this point it would be appropriate to wrap the onchange into a function in a js file instead of embedding it in the html.
在这一点上,将 onchange 包装到一个 js 文件中的函数而不是将其嵌入到 html 中是合适的。
回答by Robusto
I would use the onchange event:
我会使用 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>
Although Daniel Mendel's solution is perfectly valid.
尽管丹尼尔孟德尔的解决方案是完全有效的。
回答by Daniel Mendel
This is because IE doesn't register a click event when you select a new option in a select field (guessing). Instead, you should use the onBlur event (and put the code into your javascript instead) like so (assuming jQuery):
这是因为当您在选择字段(猜测)中选择新选项时,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>

