2013-07-21 31 views
0

我正在使用這個整潔的插件來定製<select>列表。<select>選項更改 - URL重定向

http://exodecreations.com/jQuery/jqDropDown.html

我想拿出代碼,這樣,當用戶選擇的每個選項,他將被重定向到一個頁面。我的代碼如下:

<form action="#"> 
<select id="elidp" > 
<option value='' disabled selected>Choose Location...</option> 
<option value='http://www.google.com/'>New York</option> 
<option value='http://www.google.com/'>LA</option> 
</select> 
</form> 

的Jquery:

當用戶更改選項
jQuery(function() { 

    jQuery('#elidp').jqDropDown({ 
     optionChanged: function(){ jQuery('#elidp').on('change', function() {var url = $(this).val(); if (url) {window.location = url;}return false;});}, 
     direction: 'up', 
     defaultStyle: false, 
     containerName: 'theContainer', 
     toggleBtnName: 'awesomeToggleClass', 
     optionListName: 'thisListIsRocking', 
     effect: 'fade', 
     effectSpeed: 300 
    }); 

}); 

然而,沒有任何反應...任何想法?

+0

你看着你的瀏覽器對任何可能的錯誤JavaScript控制檯? – cherit

+0

無論您分配給像'optionChanged'這樣的選項的值是在選擇更改時將觸發的代碼。而不是觸發你實際想要執行的代碼,而是將一個*事件處理程序*綁定到選擇「更改」事件。到那個時候,變化已經發生了(這就是代碼首先運行的原因)。 –

+0

謝謝,但似乎有另一個問題 - HTML標記是這樣呈現的:'

  • New York
  • ' –

    回答

    1

    因爲它們實際上並沒有改變。提供的兩個選項的值相同(google.com)

    0

    jqDropDown的optionChanged方法正在處理select元素的onChange事件。使用.on jQuery方法附加一個事件處理程序並不是您想要的。

    optionChanged: function(){ 
         jQuery('#elidp').on('change', function() { 
          var url = $(this).val(); 
          if (url) {window.location = url;} 
          return false; 
         }); 
        } 
    

    應該是更多的東西是這樣的:

    optionChanged: function(){ 
         var url = $(this).val(); 
         if (url) {window.location = url;} 
        }