2013-07-25 157 views
0

我創建了一個腳本,它向服務器發出請求並獲取一些用於創建下拉菜單的數據的json響應,在某些情況下,服務器返回一個單一值,當然,產生下拉只有一個選項(如下)使用一個選項觸發事件onChange下拉菜單

<div id="wrap"> 
    <select class="click_me"> 
     <option value="1">foo</option> --> this value comes from a json response. 
    </select> 
</div> 

這是我的jQuery腳本(我認爲這是自我解釋)

$('#wrap').on('change', 'select', function() { 

    var container = $('#wrap'); 
    var self = $(this); 
    self.nextAll().remove(); 

    $.ajax({ 
     type: 'GET', 
     url: 'server/stuff?id=' + self.val(), 
     dataType: 'json', 
     success: function(data) { 
     if (data) { 
      var options = self.clone().empty().appendTo(container); //clone current dropdown. 
      $.each(data, function(key, value) { 
      $.each(value, function(key, value) { 
       options.append($("<option />").val(key).text(value)); //fill cloned element with new data 
      }); 
      }); 
     } else { 
      console.log('Nothing more'); 
     } 
     } 
    }); 


    }); 

如果用戶得到一個下拉一個選項,上面的腳本不起作用。我認爲onchange事件沒有被觸發,我嘗試了onclick事件,但是當用戶只想打開下拉菜單時,它會觸發。

請任何建議表示感謝。

感謝

+0

糾正我,如果我錯了。您將數據加載到json響應的下拉列表中。那麼用戶應該從下拉列表中選擇一個選項,然後再對其進行更改。在那種情況下,爲什麼只有一個選項時需要自動化? –

+0

我的回答對你有用嗎? –

+0

Sandiip Patil:下拉式表示一個州內存儲的數據(國家>州>城市>培訓中心)只能存在一個城市,但在該城市可能存在許多培訓中心),這就是我在我的問題中解釋的問題 –

回答

4

您可以像下面的方式解決類似的問題。當點擊選擇列表時,如果只有一個選項,我們可以通過我們自己來調用更改事件。所以請嘗試

$('#wrap').on('change', 'select', function() { 
    //your stuff 
}).click(function(){ 
    if($('#wrap select option').length == 1) { 
    $('#wrap select').change(); 
    } 
}); 

工作小提琴是here。通過添加一些更多的選項來測試它,以確保它,它也適用於多個選項。

0

後您的json response做這樣的檢查:

if($('#wrap .click_me option').length == 1) { 
    $('#wrap .click_me').change(); 
} 
0

嘗試,

$("dropdownId").blur(function(){ 
// here goes your code 
} 
相關問題