Всем доброго дня!
У меня еще маленький вопрос. Вывожу данные: <table class="table_style_1"> <?php foreach ($tags as $item):?> <tr class="field"> <td width="150px"> <input type="hidden" name="id[]" value="<?=$item['id']?>" /> <input disabled="" style="text-transform: uppercase" type="text" name="tag" value="<?=$item['tag']?>" placeholder="TEG" /> </td> <td> <input disabled="" type="text" name="tag_name" value="<?=$item['tag_name']?>" placeholder="Название поля" /> </td> <td width="200px"> <select disabled="" type="radio" name="tag_template"> <option <?php if($item['tag_template'] == '0') echo 'selected=""';?> value="0">Текстовое</option> <option <?php if($item['tag_template'] == '1') echo 'selected=""';?> value="1">Числовое с переводом числа в текст</option> <option <?php if($item['tag_template'] == '2') echo 'selected=""';?> value="2">Срок исполнения</option> </select> </td> <td id="open" width="32px"> <a class="list_button" id="open"><i title="Редактировать" class="fa fa-pencil" aria-hidden="true"></i></a> </td> <td id="save" width="32px" style="display: none"> <a class="list_button" id="save" href=""><i title="Сохранить" class="fa fa-save" aria-hidden="true"></i></a> </td> <td width="32px"> <a class="list_button" id="del" href=""><i title="Удалить" class="fa fa-trash-o" aria-hidden="true"></i></a> </td> </tr> <?php endforeach;?> </table> По умолчанию input disabled="", при нажатии на кнопку open, делаю input открытым и открываю кнопку сохранить. $("#open").click(function(){ $(this).parent().first().find('input,select').prop('disabled',false); $(this).parent().find('td#open').css({'display': 'none'}); $(this).parent().find('td#save').css({'display': ''}); }); Но данное условие срабатывает только на первый элемент. ???? |
skitskis, ID - уникальный идентификатор.
Именно так нужно в большинстве случаев стоит понимать значение этих двух букв. Замените атрибут id на class. |
Nexus, спасибо ))) все работает. Теперь буду знать, а то уже два дня сижу...
|
...
Цитата:
|
Цитата:
name="id[]" name="tag_name[]" name="tag_template[]" )) |
Это не все. Если ранее была тема о добавлении данных, то там был массив полей формирующийся динамически. В данном случае похоже речь идет о редактировании, а значит поля формы лучше связывать по id, а не опять набором по порядку, это может привести к ошибкам нежелательным.
Прятать id в скрытое поле можно, но совсем не требуется, и это поле безболезненно для последствий можно удалить. Лучше поступать так: name="tag_name[<?=$item['id']?>]" name="tag_template[<?=$item['id']?>]" и каждый из этих ключей будет содержать массив, ключи у которого есть ID записей из базы. Можно задать имена и так, чтобы был один многомерный массив, каждое вложение которого, это массив, ключи которого ID, а значение ассоциативный массив: tag_name=>значение, tag_template=>значение. А если бы ваш список содержал с десяток опций так бы и определялся выбор? if($item['tag_template'] == '2') echo 'selected=""' |
Доброго все вечера!
Почти закончил уже свой проект, но вернулся опять к тому с чего начал и обнаружил что не все работает как хотел. А именно: есть tr строки для клонирования, в них есть select со значение value шаблона input. Задача при смене значения select.set_tag_template изменить id поля input.tag_template. делаю я это удалением старого поля и записываю новое поле с новым id. Дело в том что, первая строка работает и я отлавливаю id, но после клонирования, в следующие строки я уже не могу поймать значение select. Вот я завернул, надеюсь понятно. Вот сам код: <form action="" method="POST" enctype="multipart/form-data"> <input type="hidden" name="agreement_id" value="<?=$data['id']?>" /> <table class="table_style_1"> <thead id="sortable" rel="agreement_tags"> <tr class="field"> <td width="20px"> <a class="sortable_a"><i title="Переместить" class="fa fa-sort" aria-hidden="true"></i></a> </td> <td width="150px"> <input type="hidden" name="id[]" value="0" /> <input type="text" style="text-transform: uppercase" name="tag[]" value="" placeholder="TEG" /> </td> <td width="200px"> <input type="text" name="tag_name[]" value="" placeholder="Название поля" /> </td> <td class="delete_clase_tag_template"> <input type="text" name="tag_text[]" class="tag_template" value=""/> </td> <td width="200px"> <select class="set_tag_template" type="radio" name="tag_template[]"> <option value="text">Текстовое</option> <option value="srok_r_d">Срок рабочие дни</option> <option value="adres">Адрес</option> </select> </td> <td width="32px"> <button name="save_tags" type="submit" class="save"><i title="Сохранить" class="fa fa-save" aria-hidden="true"></i></button> </td> <td width="32px" class="td_del_button"> <a class="list_button_del" id="del"><i title="Удалить" class="fa fa-trash-o" aria-hidden="true"></i></a> </td> </tr> </thead> <tbody class="inputs_tag"> </tbody> <tfoot> <tr class="tr_hiden_add_produkt_score"> <td colspan="7"> <a class="add_tag">Добавить тег</a> </td> </tr> </table> </form> <script> $(function() { $('.add_tag').click(function() { $('.field').first() .clone() .appendTo('.inputs_tag') .end() .find('input,select').val('').end() .find('input.id').val('0').end() .find('.list_button_del').remove().end() .find('.td_del_button').append('<a class="list_button_del" id="del"><i title="Удалить" class="fa fa-trash-o" aria-hidden="true"></i></a>') .end() .find('.list_button_del#del').click(function() { $(this).parent().parent().remove(); }) }); }); $(function() { $('.list_button_del#del').click(function() { $(this).parent().parent().remove(); }); }); //смена полей ввода (тег поля)// $(function() { $('.set_tag_template').change(function(){ tag_template = $(this).val(); console.log(tag_template); //$(this).parent().parent().find('.tag_template').attr("id", tag_template); $(this).parent().parent().find('.tag_template').remove(); $(this).parent().parent().find('td.delete_clase_tag_template').append('<input type="text" name="tag_text[]" class="tag_template" id="'+ tag_template +'" value=""/>'); }); }); //смена полей ввода (тег поля)// </script> |
Вот тут можно посмотреть как работает, вывод в консоль настроен: https://codepen.io/Skitskis/pen/GyLddM
|
skitskis,
постаьте ваши click и change на то что есть всегда, table или form $("table").on("click", ".add_tag", ....) |
Цитата:
|
Часовой пояс GMT +3, время: 05:08. |