работа с динамической формой

Тема в разделе "JavaScript", создана пользователем Runapa, 27 мар 2014.

Модераторы: ZiX
  1. Runapa

    Runapa Постоялец

    Регистр.:
    30 окт 2010
    Сообщения:
    63
    Симпатии:
    5
    Здравствуйте.
    Нашел в инете скрипт создания динамических форм.

    Код:
    <script type="text/javascript">
        var total = 0;
        function add_new_field(){
            total++;
            $('<tr>')
            .attr('id','tr_image_'+total)
            .css({lineHeight:'20px'})
          
            .append(
               $('<td valign="top">')
               .attr('id','code')
                .append(
                    $('<input type="text" />')
                    .css({width:'160px'})
                    .attr('id','code[]')
                    .attr('name','code[]')
                )                           
            )
            .append (
                $('<td valign="top" align="center">')
                .css({width:'40px'})
                .append (
                    $('<span id="progress_'+total+'" class="padding5px"><a  href="#" onclick="$(\'#tr_image_'+total+'\').remove();" class="ico_delete"><img src="img/delete.png" alt="del" border="0"></a></span>')
                )
            )
            .appendTo('#table_container');
        }
        $(document).ready(function() {
            add_new_field();
        });
    </script>
    А вопрос у меня такой -
    При добавлении второго линии поля, в код страницы добавляется id = code[]. Как мне получить доступ к этому полю через js ?
    Я хочу суммировать значения двух полей инпут и вставлять его в третье поле. С первой линией вроде получилось, а с теми полями что генерируются динамически никак не выходит...
     
  2. alffcpu

    alffcpu Создатель

    Регистр.:
    23 окт 2013
    Сообщения:
    22
    Симпатии:
    56
    $('[name="code[]"]').val(Значение) - найти элемент с name="code[]" и записать туда значение. (так можно искать input с любым именем)
    $('#code[]').val(Значение) - найти по id (code[]) и записать значение.

    Если полей с name или id со значением code[] несколько, то стоит вот так задавать $('#code[]:eq(N)').val(Значение), где N - номер нужного input по счету.
     
  3. Runapa

    Runapa Постоялец

    Регистр.:
    30 окт 2010
    Сообщения:
    63
    Симпатии:
    5
    А можете показать на конкретном примере ? Функция ниже прекрасно меняет значения полей input первой линии. Но вот распространить эффект на другие линии не удаётся. Когда я пробую тот синтаксис что вы мне дали, консоль выкидывает ошибку - Uncaught Error: Syntax error, unrecognized expression : ]

    Код:
        function sum() {
            var
                price = $('td#price input').val(),
                quantity = $('td#quantity input').val();
                $("td#summa input").val(price * quantity);
        }
      
        $(document).ready(function() {
            $('td#price input, td#quantity input').keyup(sum);
            $('td#summa input').change(sum);
        });
     
    Последнее редактирование: 30 мар 2014