2013-07-25 3 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

Try,

$("dropdownId").blur(function(){ 
// here goes your code 
} 
Смежные вопросы