select

20 views
Skip to first unread message

Ильгиз Низамутдинов

unread,
Oct 3, 2012, 5:17:34 PM10/3/12
to codeign...@googlegroups.com
помогите решить проблему, у меня есть форма там есть Select при выборе первого  скелета №1 нужно в седеющий селект№2 загрузить данные с БД из серва БЕЗ перезагрузки страницы, как это сделать?

Игорь Сафиюлин

unread,
Oct 4, 2012, 3:02:58 AM10/4/12
to codeign...@googlegroups.com
по клику на селект с помощью jquery отправляем CI значение первого селекта, в ответ полчаем элементы второго селекта (через json к примеру) и опять же с поомщью jquery заполняем второй селект
как-то так

четверг, 4 октября 2012 г., 4:17:34 UTC+7 пользователь Ильгиз Низамутдинов написал:

pro100tak_Харьков

unread,
Oct 4, 2012, 3:03:00 AM10/4/12
to codeign...@googlegroups.com
1. onChange() на первом селекте
2. в обработчике сделать аякс-запрос на сервер, отдать, к примеру, JSON.
3. На стороне клиента в коллбеке заполнить второй селект.

Конкретная реализация будет зависеть от используемого JavaScript фреймворка.

Если данных мало - я бы не делал лишний запрос, а формировал бы массив данных со вложенными готовыми данными для всех дочерних селектов.

четверг, 4 октября 2012 г., 0:17:34 UTC+3 пользователь Ильгиз Низамутдинов написал:

Alex Saveliev

unread,
Oct 4, 2012, 3:05:59 AM10/4/12
to codeign...@googlegroups.com
Вопрос вообще-то не по CI

<select id="s1">...</select>
<select id="s2">...</select>

$('#s1').change(function(){  // определяем событие onchange 
   var v = {'value':$(this).val()}; //  определяем значение select
   $.get('адрес_запроса',v,
      function(data) {

   )

});

4 октября 2012 г., 1:17 пользователь Ильгиз Низамутдинов <bion...@gmail.com> написал:
помогите решить проблему, у меня есть форма там есть Select при выборе первого  скелета №1 нужно в седеющий селект№2 загрузить данные с БД из серва БЕЗ перезагрузки страницы, как это сделать?

--
Вы получили это сообщение, поскольку подписаны на группу СodeIgniter-ru.
Просмотреть это обсуждение в Сети можно по адресу https://groups.google.com/d/msg/codeigniter-ru/-/sVoDSj2OEqIJ.
Чтобы добавлять сообщения в эту группу, отправьте письмо по адресу codeign...@googlegroups.com.
Чтобы отменить подписку на эту группу, отправьте сообщение по адресу codeigniter-r...@googlegroups.com.
О дополнительных функциях можно узнать в группе по адресу http://groups.google.com/group/codeigniter-ru?hl=ru.



--
Алексей Савельев

Rauf Mehdiyev

unread,
Oct 4, 2012, 3:07:03 AM10/4/12
to codeign...@googlegroups.com
Вот простой пример с ипользованием jQuery:

$(function(){
    $('.country_select').change(function(){
        $.get('/city/get/'+$(this).val(), [], function(r){
            if(r.result.length > 0){
                var city_select = $('<select id="city" name="city" />');
                city_select.append($('<option value=""></option>'));
                $.each(r.result, function(i,v){
                    city_select.append($('<option value="'+v.id+'">'+v.name+'</option>'));
                });
                $('#city').replaceWith(city_select);
            }else{
                $('#city').hide();
            }
        }, 'json');
    });
});



2012/10/4 Ильгиз Низамутдинов <bion...@gmail.com>
помогите решить проблему, у меня есть форма там есть Select при выборе первого  скелета №1 нужно в седеющий селект№2 загрузить данные с БД из серва БЕЗ перезагрузки страницы, как это сделать?

--
Вы получили это сообщение, поскольку подписаны на группу СodeIgniter-ru.
Просмотреть это обсуждение в Сети можно по адресу https://groups.google.com/d/msg/codeigniter-ru/-/sVoDSj2OEqIJ.
Чтобы добавлять сообщения в эту группу, отправьте письмо по адресу codeign...@googlegroups.com.
Чтобы отменить подписку на эту группу, отправьте сообщение по адресу codeigniter-r...@googlegroups.com.
О дополнительных функциях можно узнать в группе по адресу http://groups.google.com/group/codeigniter-ru?hl=ru.



--
Best Regards,
Mehdiyev Rauf

Alex Saveliev

unread,
Oct 4, 2012, 3:07:59 AM10/4/12
to codeign...@googlegroups.com
<select id="s1">...</select>
<select id="s2">...</select>

// jquery 
$('#s1').change(function(){  // определяем событие onchange 
   var that = $(this);
   var v = {'value':that.val()}; //  определяем значение select
   $.get('адрес_запроса',v,
      function(data) {   // ожидаем получение данных в виде HTML
            that.html(data); // заменяем содержимое select
       }

   )

});

4 октября 2012 г., 11:05 пользователь Alex Saveliev <aya...@gmail.com> написал:



--
Алексей Савельев

Alex Saveliev

unread,
Oct 4, 2012, 3:08:38 AM10/4/12
to codeign...@googlegroups.com
Сорри третья попытка

<select id="s1">...</select>
<select id="s2">...</select>

// jquery 
$('#s1').change(function(){  // определяем событие onchange 
   var that = $(this);
   var v = {'value':that.val()}; //  определяем значение select
   $.get('адрес_запроса',v,
      function(data) {   // ожидаем получение данных в виде HTML
            $('#s2').html(data); // заменяем содержимое select
       }

   )

});

4 октября 2012 г., 11:07 пользователь Alex Saveliev <aya...@gmail.com> написал:



--
Алексей Савельев

Святослав Журовський

unread,
Oct 4, 2012, 3:31:05 AM10/4/12
to codeign...@googlegroups.com
    <script type="text/javascript">
        $(document).ready(function(){
            //
            //
            $('select#id_sub_category').attr('disabled', true);
            //$('select#id_sub_category').hide();
            //$('#sub_category').hide();
           
            $("select#id_category").change(function(){
                $.getJSON("/ogo/fetch-subcat/",{id: $(this).val()}, function(j){
                    var options = '';

                    for (var i = 0; i < j.length; i++) {
                        options += '<option value="' + j[i].optionValue + '">' + j[i].optionDisplay + '</option>';
                    }

                    $("#id_sub_category").html(options);
                    $('#id_sub_category:first').attr('selected', 'selected');
                    //$('select#id_sub_category').show(1000);
                    $('select#id_sub_category').removeAttr('disabled');
                    //$('#sub_category').show();
                })
            });
        });
    </script>


генерация json (правда на Python, но не сложно понять):

@render_json
def fetch_subcat_json(request):
    result = list()

    cat = Category.objects.get(pk=int(request.GET.get('id', '')))
    sub_cat = SubCategory.objects.filter(parent=cat)

    for sc in sub_cat:
        result.append({ 'optionDisplay': sc.name, "optionValue" : sc.pk })

    return result

Четвер, 4 жовтня 2012 р. 00:17:34 UTC+3 користувач Ильгиз Низамутдинов написав:
Reply all
Reply to author
Forward
0 new messages