2015-09-18 60 views
0

當我在選擇選項綁定一個事件處理程序,該事件處理函數調用在Internet Explorer中無法正常工作的功能(工作完全在Chrome,火狐,和Safari)。的Javascript:事件處理程序不會在選擇選項工作(IE)

下面是代碼,很簡單:

<select onmousedown="display_options(this, 10);"> 
    <option value="1">1</option> 
    <option value="2">2</option> 
    <option value="3">3</option> 
    <option value="4">4</option> 
    <option value="5">5</option> 
    <option value="6">6</option> 
    <option value="7">7</option> 
    <option value="8">8</option> 
    <option value="9">9</option> 
    <option value="10">10</option> 
    <option value="11">11</option> 
    <option value="12">12</option> 
</select> 

<script type="text/javascript"> 

function display_options(this_select, size) 
{ 

    /*If the select size is greater than size parameter, apply size parameter to the select :*/ 
    if(this_select.length > size) 
    { 
     this_select.size = size; 

     /*Position absolute to simulate a classic select :*/ 
     this_select.style.position = "absolute"; 
    } 

    /*When clicking in an option, come back to size 0 for the select. Works perfectly in Chrome, Firefox, Safari, but doesn't work in IE :*/ 
    for(var i = 0; i < this_select.options.length; i++) 
    {   
      this_select.options[i].onclick = function(event) 
      { 
       this_select.size = 0; 
      };   
    } 

    /*When clicking outside the select, come back to size 0 for the select :*/ 
    this_select.onblur = function() 
    { 
     this_select.size = 0; 
    }; 
} 

在此代碼,這是this_select.options[i].onclick = function(event){...}在IE中不起作用,因爲選項列表不回來大小爲0

你有想法嗎?你可以嘗試代碼:https://jsfiddle.net/4hck3vo0/

謝謝你在前進,親切。

+0

應該有很多在這個愚弄的,的onclick並不在IE選項的工作。在選擇上使用更改。 – epascarello

+0

如果選擇的選項與選擇大小大於1時的上一個選定選項相同,則選擇標記中的onchange不起作用。 – totoaussi

+0

比選擇 – epascarello

回答

0

我猜,Internet Explorer被再次做一些古怪。但是,爲什麼你使用onmousedown和onclick?如果您沒有使用它們的具體原因,我會建議使用onChange屬性。有關更多信息,請參閱http://www.w3schools.com/jsref/event_onchange.asp

+0

我不使用onchange,因爲如果選擇選項與選擇大小大於1時選擇的選項相同,選擇標籤中的onchange不會執行該功能。我希望選擇返回到大小0當您單擊與上一個選定選項相同的選項時。 – totoaussi

相關問題