Onclick in选择不在IE中工作

时间:2010-10-21 15:07:50

标签: javascript select onclick

对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 !!!!!

3 个答案:

答案 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>