Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как переназначить id всех элементов <input> в форме при добавление нового <input> (https://javascript.ru/forum/dom-window/56957-kak-perenaznachit-id-vsekh-ehlementov-input-v-forme-pri-dobavlenie-novogo-input.html)

Эдди 12.07.2015 10:26

Как переназначить id всех элементов <input> в форме при добавление нового <input>
 
Есть форма с таблицей, где в каждой строке имеется input:
<input id="chek1"
<input id="chek2"
<input id="chek3"

В каждой строке есть кнопка "+", которая копирует строку с текущим id при помощи функции JS.
Получается следующее:
<input id="chek1"
<input id="chek2"
<input id="chek2"
<input id="chek3"

Теперь значения id не уникальны, и невозможно обратиться к ним по id.

Как же дополнить уже имеющуюся функцию JS циклом, чтобы получить:
<input id="chek1"
<input id="chek2"
<input id="chek3"
<input id="chek4"

Буду очень благодарен.

ksa 13.07.2015 08:17

Цитата:

Сообщение от Эдди
Как же дополнить уже имеющуюся функцию JS циклом, чтобы получить:
<input id="chek1"
<input id="chek2"
<input id="chek3"
<input id="chek4"

Вывод один - не клонировать инпут, а делать новый.

laimas 13.07.2015 11:46

Цитата:

Сообщение от Эдди
Теперь значения id не уникальны, и невозможно обратиться к ним по id.

Вообще-то и не обязательно обращаться к элементу по его id. Тут вопрос нужно ставить скорее не "как назвать" элемент, а "можно ли добавлять" элемент в форму. То есть, если добавление элемента в конечном итоге порождает новую запись в sql-таблице и у таблицы определен первичный уникальный ключ имеющий конечное значение, то более этого значения добавлять нельзя.

Если вставка не лимитируется со стороны SQL, значит при загрузке страницы получить в форме элементы, которые клонируются, среди них найти максимальный номер, например:

var max = element.id.match(/\d+$/); - где element это полученный каким либо способом элемент.

при каждом клонировании увеличивая его на 1, и добавляя к значению атрибута элемента.

Leon-on12 13.07.2015 13:54

Прежде всего можно попробовать переписать функцию клонирования. Что бы она добавляла цифру в id при клонировании.
А тот цикт который ты просишь довольно прост:

<body>
  <div id="ma1"></div>
  <div id="ma1"></div>
  <div id="ma2"></div>
  <div id="ma3"></div>
  <div id="ma4"></div>
  <div id="ma4"></div>
  <div id="ma5"></div>
  <div id="ma7"></div>

</body>


var elem=document.getElementsByTagName("div")
var i = 0;
for (i = 0;i<elem.length;i++){
  elem[i].id="chek"+i;
}

Эдди 13.07.2015 17:07

Цитата:

Сообщение от Leon-on12 (Сообщение 379057)
Прежде всего можно попробовать переписать функцию клонирования. Что бы она добавляла цифру в id при клонировании.
А тот цикт который ты просишь довольно прост:

<body>
  <div id="ma1"></div>
  <div id="ma1"></div>
  <div id="ma2"></div>
  <div id="ma3"></div>
  <div id="ma4"></div>
  <div id="ma4"></div>
  <div id="ma5"></div>
  <div id="ma7"></div>

</body>


var elem=document.getElementsByTagName("div")
var i = 0;
for (i = 0;i<elem.length;i++){
  elem[i].id="chek"+i;
}

Леон. Весь день в голове крутилась та же мысль!
Прокрутить по name и назначить id в цикле!!!
СПАСИБО!

Просто потом надо будет при пометке чекбокса скрывать или показывать этот элемент. И у него должно быть уникальное значение.

Нет, все же JS -это класс, хотя я больше в php работаю.
:)

Эдди 13.07.2015 17:08

Функция клонирования - не моя.
Она отлично работает. Ее не хотелось бы трогать.

Если что, вот эти функции клонирования и удаления строк:Н
<script type="text/javascript">
//Удаление строки
function droptr(btn){
  if(document.getElementById) {
          tr = btn;
          while (tr.tagName != 'TR') tr = tr.parentNode;
          tr.parentNode.removeChild(tr);
          checkForLast();
  }
}
//Добавление строки
function addtr(btn){
  if(document.getElementById) {
          tr = btn;
          while (tr.tagName != 'TR') tr = tr.parentNode;
          var idSuffix = Math.round(Math.random()*1000);
          var newTr = tr.parentNode.insertBefore(tr.cloneNode(true),tr.nextSibling);
          thisChilds = newTr.getElementsByTagName('td');
          checkForLast();
    }
  }
}
//Активация/дезактивация кнопки минус ( - )
//Неактивна, когда строка строка одна или нет ни одной добавленной строки
function checkForLast(){
  btns = document.getElementsByName('drop');
  for (i = 0; i < btns.length; i++){
          btns[i].disabled = (btns.length == 1) ? true : false;
  }
}
</script>

Надо ли изменять эти функции или просто в них добавить вышеуказанный цикл?

kostyanet 13.07.2015 19:41

Цитата:

Сообщение от Эдди
Теперь значения id не уникальны, и невозможно обратиться к ним по id.


Вам id вообще не нужны.

Пользователь выбирает и показывает _что_ скопировать (равно удалить, редактировать).

Выбрал - скопировали - осталось выбранное - можно редактировать. Все просто.

Ну то есть после копирования надо лишь перенести фокус на копию чтоб она осталась активной.

Эдди 14.07.2015 08:20

Цитата:

Сообщение от kostyanet (Сообщение 379211)
Вам id вообще не нужны.

Пользователь выбирает и показывает _что_ скопировать (равно удалить, редактировать).

Выбрал - скопировали - осталось выбранное - можно редактировать. Все просто.

Ну то есть после копирования надо лишь перенести фокус на копию чтоб она осталась активной.

У меня случай посложнее.
Пользователь копирует строку. А в строке помимо прочего есть еще и чекбоксы. Это форма.
Так вот необходимо, чтобы в скрипт передавались не только помеченные чекбоксы, а еще и непомеченные, для чего до чекбокса стоит Hidden с таким же названием и value=0. И при пометке чекбокса надо сделать этот hidden style="display=none".
В общем там все сложно. :)
Перебор id по getElementsByTagName мне подходит.

laimas 14.07.2015 08:23

А если начать с этого - Пользователь копирует строку. - цель?

kostyanet 14.07.2015 08:38

Цитата:

Сообщение от Эдди
В общем там все сложно.

Это не сложно, а дофига. Куча песка - не сложна, а просто там дофига песчинок, а вот здание состоящее в сущности из песка разной природы и фракций - сложное.

Если вам для веры нужен id, то значит нужен. А вообще он там в упор не нужен, ибо есть пользователь и значит интерфейс попросту интерактивный.

Элемент копируется (клонируется) со всем своим барахлом - с хиденами и протча - как два пальца об асфальт.

kostyanet 14.07.2015 08:39

Да, само собой имена всех инпутов должны быть заточены под передачу массивом, то есть кончаться на []

Leon-on12 14.07.2015 13:23

Цитата:

Сообщение от Эдди (Сообщение 379156)
Надо ли изменять эти функции или просто в них добавить вышеуказанный цикл?


Так как вы копируете целую строку таблицы, крутить безумное решение о том что-бы скрипт находил все id в таблице и добавлял или изменял их, бессмысленно.
Вопрос такой, не возникают ли у вас проблемы с name в чекбоксах.
Потому как при клонировании, 2 строчки с чеками будут работать как единый механизм не давая выбрать 2 элемента в этих двух строчках.

При вашем способе клонирования и подобном скрипте клонирования, переписывать скрипт клонирования не имеет смысла.

Эдди 14.07.2015 13:42

Если интересно, объясняю.

На самом дело идет об админке на сайте.
Менеджер должен ввести цены на отель.
Отель имеет основной тип размещения - одноместный, двухместный и пр.
Это одна таблица htl_cost_types.
Еще есть дополнительный тип размещения - стандарт, делюкс, супериор и пр.
Это другая таблица htl_room_types.
То есть одноместный может быть как стандарт, так и супериор и т.д.
А может и вообще не иметь дополнительного типа. Просто - одноместный, двухместный и т.д.
Цены хранятся в третьей таблице, которая имеет, в частности, поля: htl_cost_type_id и htl_room_type_id.

Так вот. На страницу выводятся в таблице ВСЕ основные типы размещения с соответствующими чекбоксами, и в той же строке есть селект для выбора дополнительного типа, в котором присутствуют все доп. типы.

В этой же строке кнопки "+" и "-". Добавить строку или удалить.

К примеру менеджеру нужно ввести тип DBL и еще раз DBL, но уже с типом супериор.
Он копирует (вернее клонирует) строку DBL и в клонированной строке в селекте выбирает доп. тип "супериор".

В итоге вся проблема в том, что $_POST передает ВСЕ селекты, которые даже имеют value="", но не передает чекбоксы, которые непомеченные.

В итоге для сохранения данных в таблице цен пары "основной" и "дополнительный" тип размещения не совпадают, поскольку передаваемые ПОСТ массивы имеют разные ключи.

Чтобы ключи совпадали, мне надо передать в скрипт ВСЕ, даже пустые значения чекбоксов. Для этого вставляю дополнительный input Hidden value="" с тем же name.

Но теперь массив дополнительных типов бодет больше основных, поскольку при добавлении строки массив доп. типов включит и новый Hidden.

Именно поэтому мне нужны уникальные id, чтобы при пометке чекбокса спрятать соответствующий ему Hidden (style="display: none")

Сумбурно объяснил, но как сумел.

Может, это и криво, но я вижу только такой вариант.

Второй вариант, который был бы более простым - сделать так, чтобы непомеченный select (Ну, в первом option которого, скажем, выводится --- НЕТ ---, не передавался в скрипт. Тогда всю остальную мутотень можно и выкинуть на фиг.
Но лично я не представляю, как это сделать.
Вот и пришлось мудрить... :)

laimas 14.07.2015 14:27

Цитата:

Сообщение от Эдди
В этой же строке кнопки "+" и "-". Добавить строку или удалить.

Этого было бы достаточно, чтобы понять цель. :) А если Добавить, то клонирование существующих полей формы не годится. Нужно добавлять "чистые поля", и все, которые необходимы для добавления новых данных. И не значение id нужно увеличивать, а индексы полей или же в случае, если дынные привязываются какому либо идентификатору, то копировать в новые добавляемые поля эти идентификаторы, в случае же добавления новых записей, то временный идентификатор, диапазон которого зависит от максимального значения первичного ключа.

Попробуйте написать если и не универсальное на все случаи, но хотя бы в рамках этого администрирования, если вставка нужна не только для данной задачи. А делать это лучше так, например, пусть сам тег формы или иной удобный родитель содержит html-код вставки. Не времени все подробно пояснять, поэтому кратко:

1) html-код вставки - описывает полностью структуру "строки" в форме в которая добавляется, а не только поля формы. То есть, например, если элементы формы находятся в ячейках таблицы, то вставляемый код будет: <tr><td><input name="name(k1:)[]"></td>td><input name="name(k2:)[]"></td>...</td>.

2) :k1:, :k2:,... условно значения имен, ключей и т.п., которые после вставки нужно заменить значениями.

3) кнопка добавления новой строки в атрибутах data должна описывать замещаемые значения и значения на которые они будут замещены. Например, data-rem=":k1:,name1/:k2,<?=$id?>:",...
Подобным образом задаются любые иные параметры, которые необходимо изменять, добавлять или же передавать как значения в функцию, как и содержать ссылки на функции, которые нужно выполнить, если нельзя написать универсально для любой вставки, и требуется выполнение неких специфичных функций.

4) если имена привязываются к первичному ключу/ключам, это означает, на значение сверху наложен лимит. Поэтому вставка должна иметь счетчик, значения которого используются при вставке, и ссылка на счетчик указана в data-rem.

5) html-код вставки храниться также в атрибуте data-ins, а кнопка "Добавить" имеет ссылку на этот атрибут, по ins. то есть вставляемых "html_вариаций" может быть сколь угодно, как и кнопок добавления, каждая из которых будет добавлять свой html-код. При чем вставляемый html-код также может иметь кнопку "Добавить" - добавление внутри добавляемого.

6) кнопка "Добавить" также должна иметь атрибут содержащий указатель родительского элемента в который вставляется код. В примере с таблицей, это будет например, data-prt="table".

7) вставляемый код содержит кнопку "Удалить" содержащую указатель на удаляемого родителя, для пример это будет data-prt="tr".

Непосредственно спрятать в атрибут data html-код не получиться, поэтому можно прибегнуть к base64, но лучше url кодирование, значения будут короче. То есть типа <form data-ins="<?=rawurlencode(вставляемый html-код)?>", а на клиенте в обработчике кнопки "Добавить" получать его - decodeURIComponent(this.getAttribute("data-ins")). Если все обдумать, то единый обработчик будет добавлять любой html-код на страницу, параметры которого описаны в атрибутах.

Эдди 14.07.2015 14:54

Laimas. Интересно. Но я сейчас добью первый вариант из принципа. Если будет ок, то пусть уже менеджеры начнут работать. А потом спокойно разберусь с Вашим вариантом. Если он будет проще и правильнее - заменить - как два пальца :)

Эдди 14.07.2015 15:12

Есть еще один вариант. Простейший. Но самый тупой :) Вообще без скриптов.
Вывести все основные типы размешения и рядом все доп.типы.
Если учесть, что основных типов штук 100, а дополн тельных штук 50, то получим таблицу в 5000 строк :) А если еще учесть, что из них в каждом отеле надо выбрать в среднем 3-5, то у менеджера это займет кучу времени. Потому и заморочился... :)

laimas 14.07.2015 16:37

Если добавление в данном, это частный и единственный случай, делайте ajax запрос и получайте html-код вставки от сервера, или пропишите его в каком либо скрытом элементе на странице. Это же не проблематично. А вот плодить лишнее "кашу маслом не испортишь", так это не только проблемы на клиенте для менеджера, но и обработка пустого и не нужного на сервере.

Эдди 14.07.2015 18:59

Цитата:

Сообщение от laimas (Сообщение 379567)
Если добавление в данном, это частный и единственный случай, делайте ajax запрос и получайте html-код вставки от сервера, или пропишите его в каком либо скрытом элементе на странице. Это же не проблематично. А вот плодить лишнее "кашу маслом не испортишь", так это не только проблемы на клиенте для менеджера, но и обработка пустого и не нужного на сервере.

Согласен, что плодить лишнего не надо.
Если бы речь шла о конечном пользователе, то я бы вылизал все, что можно.
А работники - им главное чтобы ввести данные.
К сожалению, со вчерашнего дня не смог работать. С завтрашего утра начну.
Там посмотрим, чья правда.

Кстати. В данном случае про аякс не понял. Что я должен от него получить?
У отеля нет вообще никаких данных в БД. Какой php скрипт мне что выдаст?
Я только собираюсь забить в БД данные и выбираю, какие. Упс.
Получить данные об основных и дополнительных типах размещения?
Да они у меня вот уже есть. Бес всякого аякса. Простым sql запросом.

laimas 14.07.2015 19:56

Цитата:

Сообщение от Эдди
У отеля нет вообще никаких данных в БД.

То есть даже не знаем и структуры данных, а форма для их приема тоже нечто абстрактное? Ответ сервера, это не обязательно данные из базы.

kostyanet 14.07.2015 21:46

Цитата:

Сообщение от Эдди
В итоге вся проблема в том, что $_POST передает ВСЕ селекты, которые даже имеют value="", но не передает чекбоксы, которые непомеченные.


Это потому что у вас там колхоз. Вы даже слова такого не знаете - datagrid - которую вы и делаете. В качестве годного примера - phpMyAdmin видели? - это datagrid в основе. Само собой термин тянется небось с микрософта, я не проверял, но так все кто пишет называют эту интерактивную таблицу.

Теперь про колхоз. Пустые чекбоксы не successful элементы и конечно не приходят с браузера на сервер вообще. Что никак не мешает опознать отсутствие по наличию модели. Скрипт обработки данных "знает" что должно быть и если его нет - ставит не выбрано, null, 0, или значение по умолчанию.

Еще про колхоз. Размножать инпуты вообще не обязательно. Их можно подставлять по координатам выбранной строки - как в том самом PMA и делается и делается это в общем-то довольно просто. Как тогда отгружать? Ну либо сразу аяксом - по кнопке сохранить или какому-то явному событию, или собирать все добавленные и обновленные данные в json и отгружать через одно текстовое поле, на сервере декодировать и с колес юзать без мороки с постами всякими там.

kostyanet 14.07.2015 22:04

Цитата:

Сообщение от laimas
если элементы формы находятся в ячейках таблицы, то вставляемый код будет:

То "вставляемый код" будет идентичен элементам формы которые "находятся в ячейках таблицы". Я всего лишь поменял местами критерии.

Ну то есть без клонирования можно скопировать innerHTML с любой строки и тут же его вставить в новую строку.

Заводить шаблон - запомните это слово laimas, им называется тот самый "вставляемый код" - имеет смысл если рендер полностью в браузере. Иначе любая строка будет тем самым шаблоном.

Короче, laimas, вы опять начали объяснять то, чего не понимаете и чего не делали. Интерактивные таблицы делаются не так и вообще таблицами являются только внешне. Потому что с настоящей таблицей, ну, которая table-tr-td - просто заколебешься.

kostyanet 14.07.2015 22:13

Цитата:

Сообщение от Эдди
Да они у меня вот уже есть. Бес всякого аякса. Простым sql запросом.

Да есть у меня самовар. Без всякой корневой системы. С простым большинством голосов.

Примерно так вы пишите, если перевести на язык смысла.

АЯКС - Асинхронный Яваскрипт и иКСмль - технология передачи данных на сервер с уже загруженной страницы и получения данных с сервера в уже загруженную страницу. То есть это - транспорт, трубопровод, проволока по которой страница соединяется с сервером для оперативного решения вопросов.

SQL - язык. Какое отношение язык запросов имеет к аяксу? Ну такое же как самовар к выборам по партийным спискам.

kostyanet 14.07.2015 22:32

Цитата:

Сообщение от Эдди
Цены хранятся в третьей таблице, которая имеет, в частности, поля: htl_cost_type_id и htl_room_type_id.


Это первая таблица, которая и создает офер, артикул, товар и тп.

То есть все в точности наоборот. Назовем третью таблицу htl_prices, тогда отношения будет такое

htl_prices - базовая таблица предложений
htl_cost_types - список типов размещения
htl_room_types - список типовых номеров

Теперь чтобы вывести все это барахло в интерфейс надо сделать 2 списка

запрос select id,name from htl_cost_types;
и форичем рендерим select option value=id >name<

То же самое с румами. Добавляем в форму поля для ид, названия, цены и готово. Теперь эти инпуты подставляем к ячейкам таблицы которая сама выведена запросом

select p.id, p.name, c.name, r.name, p.price
from html_prices p
left join htl_cost_types c
on c.id=p.cost_type_id
left join htl_room_types r
on r.id=p.room_type_id
order by p.name
limit 1, 20

Если вы думали что базовая таблица htl_cost_types - то запрос у вас будет другой, а если что прайсовая базовая со списками - такой же.

laimas 14.07.2015 22:42

Цитата:

Сообщение от kostyanet
Короче, laimas, вы опять начали объяснять то, чего не понимаете и чего не делали. Интерактивные таблицы делаются не так и вообще таблицами являются только внешне. Потому что с настоящей таблицей, ну, которая table-tr-td - просто заколебешься.

Слушай, умник, лучше даже не кивай в мою сторону, мне достаточно было прочесть твой очередной понос о передаче по ссылке, чтобы понять кто ты есть на самом деле.

Эдди 15.07.2015 08:04

Если прр колхоз, как вы говорите. Скрипт обработки данных вообще ничего не знаетпро непомеченные чекбоксы.
А если про аякс, то он толь ко тем отличается от простого пхп, что страницу не перезагружает.

laimas 15.07.2015 09:22

Эдди,

Не слушайте вы его, это пустышка ничего не знающая, чтобы убедиться в этом, можно почитать его бредядину, которой он сдобрил здесь массу постов. То что выше, это очередной бред.

Вам чего нужно именно на данный момент - сделать что-то быстрое конкретно и для единственной таблицы. Ну так в чем проблема, спрячьте в скрытый элемент "заготовки" полей необходимых, вставляйте.

А насчет Ajax так административный раздел можно на все 100 использовать его. Можно вообще для административного раздела не иметь страниц определяемых сервером, он отдает по асинхронному запросу только данные, а страницы формируются на клиенте по шаблонам, которые всегда находятся на клиенте.

Форма добавления данных в таблицу, будет полностью идентична форме редактирования данных этой же таблицы. То есть, то что ранее говорилось "таблица пуста" в этом и вся проблема, ну так это заблуждение - поля sql-таблицы и тип данных этих полей, это как раз то, что и определяет поля формы.

Эдди 15.07.2015 09:39

Таааак. Не ссоримся. Живем мирно. А то начинает напоминать говеный форум phpclub.ru, где слишком много умников.

Если речь пошла о запросах, kostyanet, то у меня через часик будет вопрос к Вам по этой же теме.
Вот там Вы мне очень поможете.
Готов буду даже ящик пива выслать.
Ну, наложенным платежом :)
Шучу. Реальный ящик самовывозом. :)

laimas. Ну не умею я аякс нормально отлаживать. В отличие от чистого php.

laimas 15.07.2015 09:51

Больно он мне нужен, чтобы я еще базаром с ним занимался, пустое оно и есть пустое. Просто бред о РМА, таблицах конкретно к вопросу "вставить html-код в форму" ну никакого отношения не имеет.

А я сделал вывод после его последнего ляпа - все что он тут несет, это копирование чужого или из руководств, с попыткой пояснения с растопыренными пальчиками.

А конкретно по вставить код, так решений может быть масса, включая и такое - форма добавляющая данные отдается клиенту с пустыми полями, и с полями с установкой по умолчанию. Получив форму эту, можно сразу сделать клон этих полей, который потом и использовать при добавлении. Но это не удобно тем, что при редактировании нужно очищать поля (с чего собственно и начинается ваша тема), и чем больше полей и чем разнообразнее типы данных определяемые этими полями, тем сложнее операция.
Потому вам и говорят - для вставки нужны заготовки полей, и делать это желательно так, чтобы все это работало едино для любого добавления в любую форму.

Эдди 15.07.2015 10:13

Цитата:

Сообщение от laimas (Сообщение 379706)
Больно он мне нужен, чтобы я еще базаром с ним занимался, пустое оно и есть пустое. Просто бред о РМА, таблицах конкретно к вопросу "вставить html-код в форму" ну никакого отношения не имеет.

А я сделал вывод после его последнего ляпа - все что он тут несет, это копирование чужого или из руководств, с попыткой пояснения с растопыренными пальчиками.

А конкретно по вставить код, так решений может быть масса, включая и такое - форма добавляющая данные отдается клиенту с пустыми полями, и с полями с установкой по умолчанию. Получив форму эту, можно сразу сделать клон этих полей, который потом и использовать при добавлении. Но это не удобно тем, что при редактировании нужно очищать поля (с чего собственно и начинается ваша тема), и чем больше полей и чем разнообразнее типы данных определяемые этими полями, тем сложнее операция.
Потому вам и говорят - для вставки нужны заготовки полей, и делать это желательно так, чтобы все это работало едино для любого добавления в любую форму.

Ну, примерно так. Все. Сел делать. Через пару часиков отпишусь по результату. Могу даже скриншот выложить.

Эдди 16.07.2015 14:10

Темы не хочу плодить. Спрошу здесь.
В общем, я получил уникальные ID элементов.
При onchange чекбокса скрытое поле удаляется методом remove.
А если снять галку с чекбокса, можно ли вернуть это скрытое поле на место? Или надо его в функции снова создать?
То есть, есть антипод методу remove?

Повторюсь. JS использую только в крайнем случае.
Потому не знаю его досконально. И даже не досконально.
Работаю на php.
Так что если вопрос глупый, камнями не кидаться.
input Hidden удаляю так:
function removeHid(id) {
  var elem = document.getElementById("check"+id);
  elem.parentNode.removeChild(elem);
}

kostyanet 16.07.2015 14:31

Цитата:

Сообщение от Эдди
Скрипт обработки данных вообще ничего не знаетпро непомеченные чекбоксы.

Потому что колхоз. Так не делается.

Советов как сделать datagrid быть не может, вещь сложная и емкая на находки и даже изобретения.

Одно вполне ясно - как вы начали - так оно кончится очень быстро. Например когда вместо обычных полей и чекбоксов у вас пойдут списки, мультисписки, файловые кнопки и всякие особенные поля типа паролей, стилей, символов, цвета, даты, времени и тп тп.

Эдди 16.07.2015 14:49

Цитата:

Сообщение от kostyanet (Сообщение 379987)
Потому что колхоз. Так не делается.

Советов как сделать datagrid быть не может, вещь сложная и емкая на находки и даже изобретения.

Одно вполне ясно - как вы начали - так оно кончится очень быстро. Например когда вместо обычных полей и чекбоксов у вас пойдут списки, мультисписки, файловые кнопки и всякие особенные поля типа паролей, стилей, символов, цвета, даты, времени и тп тп.

Все говно. Все геи, а если женщины, то лесбиянки. Ну это понятно.
А если по делу?

Убрал input методом remove - можно его восстановить, чтобы не писать в функции его снова?

kostyanet 16.07.2015 15:23

Ну ладно, я понял что не искали, ну гляньте как оно выглядит у людей - http://www.phpgrid.org/demo-center/ - это просто демка бесплатного скрипта по словам php datagrid Скачайте, приделайте к своим лесбиянкам и не мучайте эту как ее, ну вы поняли же.

Sigizmund2012 16.07.2015 15:42

Цитата:

Сообщение от Эдди
Убрал input методом remove - можно его восстановить, чтобы не писать в функции его снова?

В ванилле насколько я знаю нет, а в jquery есть метод detach() http://api.jquery.com/detach/ который позволяет сохранить удаляемые элементы в переменную, чтобы потом их можно было обратно вставить.

Эдди 16.07.2015 15:48

Цитата:

Сообщение от Sigizmund2012 (Сообщение 380000)
В ванилле насколько я знаю нет, а в jquery есть метод detach() http://api.jquery.com/detach/ который позволяет сохранить удаляемые элементы в переменную, чтобы потом их можно было обратно вставить.

Блн. Не хотелось jQuery подключать. Наверное, придется.

рони 16.07.2015 16:00

Цитата:

Сообщение от Эдди
Убрал input методом remove - можно его восстановить, чтобы не писать в функции его снова?

можно, достаточно removeChild

Sigizmund2012 16.07.2015 16:10

Цитата:

Сообщение от рони (Сообщение 380004)
можно, достаточно removeChild

Точно, я забыл что этот метод возвращает удалённый элемент. :yes:

kostyanet 16.07.2015 16:22

Цитата:

Сообщение от Эдди
А если по делу?


Идет обезьяна по пустыне, жаpко, пить хочется.
И вдpуг видит: стоит пальма, а на ней - кокос.
Hу обезьяна начинает тpясти ее, а внутpенний голос говоpит:
" Обезьяна, подумай ! ".
Обезьяна подумала, взяла палку, сбила кокос и напилась ...
Идет студент по пустыне, жаpко, пить хочется.
И вдpуг видит: стоит пальма, а на ней - кокос.
Hу студент начинает тpясти ее, а внутpенний голос говоpит:
" Студент, подумай ! ".
- Чего тут думать, тpясти надо !

kostyanet 16.07.2015 16:23

Цитата:

Сообщение от Sigizmund2012
Точно, я забыл что этот метод возвращает удалённый элемент

И чем это от детача отличается?

Sigizmund2012 16.07.2015 16:41

Цитата:

Сообщение от kostyanet
И чем это от детача отличается?

Краткостью и экономией ресурсов, да и быстрее нативный метод. detach() работает с коллекцией jquery, а не напрямую с элементом. И да, библиотеку подключать надо.


Часовой пояс GMT +3, время: 18:15.