За последние 24 часа нас посетили 62007 программистов и 1594 робота. Сейчас ищут 949 программистов ...

динамическое добавление инпутов и Autocomplit

Тема в разделе "JavaScript и AJAX", создана пользователем Slavka, 25 окт 2013.

  1. Slavka

    Slavka Активный пользователь

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    Задача : на форме есть минимум 1 поле - обзавем его dynamic_input_1
    и в некоторых случаях количество полей необходимо увеличить - соответственно они будут dynamic_input_2..dynamic_input_n
    также во всех этих полях должен работать аутокомплит .. брать из базы ид и текст и выводить пользователю
    но вот незадача : dynamic_input_1 - статическое и в нем аутокомплит работает .. а вот в добавленных полях он не срабатывает
    вот как я делаю :
    форма
    Код (Text):
    1.  
    2. <form>
    3. <table class="dynamic">
    4.         <tr><td>поля для работы</td><td><a href="#" class="add_spisanie">Добавить</a> </td></tr>
    5.          <input name="counter" class="counter" value="1" type="hidden" />
    6.         <tr><td><input type="input" name="dynamic_input_1" value="" class="neispravnost" rel="1"/></td><td> </td></tr>
    7. </table>
    8. </form>
    теперь javascript добавление и удаление полей
    Код (Text):
    1.  
    2.       $('.add_spisanie').click(function(){
    3.        var num = parseInt($('.counter').val())+1;
    4.        $('.counter').val(num);
    5.        $('<tr class="test_'+num+'"><td><input type="input" name="dynamic_input_'+num+'" value="" class="neispravnost" rel="'+num+'"/>&nbsp;</td><td><a href="#" rel="'+num+'" class="remove_spisanie">Удалить</a></td></tr>').appendTo('.dynamic'); 
    6.         return false;
    7.     });      
    8.     $('.dynamic').on('click','.remove_spisanie',function(){
    9.     var num = $(this).attr('rel');
    10.     $('.test_'+num).remove();
    11.     $('.dynamic_'+num).remove();
    12.     return false;
    13. });
    теперь javascript аутокмплита
    Код (Text):
    1.  
    2.             $.getJSON( "/uchet/imushestvo/imushestvo.php?data=neispravnost",  function(data){
    3.                 $('.neispravnost').autocomplete({ source: data,minLength:1,
    4.                                                select: function( event, ui )
    5.                                                    {alert($(this).attr("rel"));
    6.                                                    
    7.                                                     //var num=$(this).attr("rel");
    8.                                                     //$("#neispravnost_id_"+num).val(ui.item.id)
    9.                                                     }});
    как видно аутокмплит натравлен на класс neispravnost - когда статическое поле и даже не одно ( специально проверял) все работает - а к новым полям он не срабатывает ((

    у меня есть 1 не очень хорошая идея - попробовать весь текст аутокомплита воткнуть в функцию и при добавлении поля опрашивать снова сервер и все такое .. но как то это не правильно - должен же быть какойто простой способ заставить его видеть только что созданный класс
     
  2. Slavka

    Slavka Активный пользователь

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    сижу думаю - нашел несколько советов - чтото типа такого
    Код (Text):
    1.  
    2.             $.getJSON( "/uchet/imushestvo/imushestvo.php?data=neispravnost",  function(data){
    3.                 var neispravnost = data;
    4.             });
    5.  
    6. $('.dynamic').on('focus','.neispravnost',function(){
    7. $(this).autocomplete({ source: neispravnost,minLength:1,
    8.                                                select: function( event, ui )
    9.                                                    {alert($(this).attr("rel"));
    10.                                                    
    11.                                                     //var num=$(this).attr("rel");
    12.                                                     //$("#neispravnost_id_"+num).val(ui.item.id)
    13.                                                     }});
    но почемуто мне не нравится что при каждом клике будет прикручиваться аутокомплит.. кстати интересный вопрос - будет или нет ? =)

    Добавлено спустя 1 минуту 56 секунд:
    сразу говорю я спецом сделал именно такую загрузку ($.getJSON) - почему ? - сервак не дергает каждый раз когда в инпуте набираете букавку.

    Добавлено спустя 15 минут 55 секунд:
    вроде запустил - по 2 варианту работает.. выслушиваю критику и какие возможны сбои в работе ?