#javascript
Прошу помощи добавить кнопку редактирования / сохранения в ячейке, рядом с другими кнопками добавления и удаления строк. Кнопка должна дублироваться вместе с остальными, в каждой строке. body { font-family: "Helvetica"; font-size: medium; } table { border-collapse: collapse; text-align: center; margin: auto; } table td, table th { border: solid 1px #aaa; padding: 10px; } table tbody tr:nth-child(2n) { background: #a8d7ff; } table tbody tr:hover { background: #fffcb6; }
Поле 1 | Поле 2 | Поле 3 | Поле 4 | Поле 5 |
---|---|---|---|---|
Ответы
Ответ 1
Никогда такого сам не делал, не судите строго : var DynamicTable = (function(GLOB) { var RID = 0; return function(tBody) { /* Если ф-цию вызвали не как конструктор фиксим этот момент: */ if (!(this instanceof arguments.callee)) { return new arguments.callee.apply(arguments); } //Делегируем прослушку событий элементу tbody tBody.onclick = function(e) { var evt = e || GLOB.event, trg = evt.target || evt.srcElement; if (trg.className && trg.className.indexOf("add") !== -1) { _addRow(trg.parentNode.parentNode, tBody); } else if (trg.className && trg.className.indexOf("del") !== -1) { tBody.rows.length > 1 && _delRow(trg.parentNode.parentNode, tBody); } // то что я добавил if (trg.className && trg.className.indexOf("edit") !== -1) { var tds = trg.closest('tr').children; for (var i = 0; i < tds.length; i++) { if (tds[i].className.indexOf("buttons") == -1) { var input = tds[i].getElementsByTagName('input')[0]; var lbl = tds[i].getElementsByTagName('label')[0]; input.value = lbl.textContent; input.classList.remove("invisible"); lbl.classList.add("invisible"); } else { var buttons = tds[i].children; for (var j = 0; j < buttons.length; j++) { if (buttons[j].className.indexOf("save") !== -1) { buttons[j].disabled = false; break; } } } } } if (trg.className && trg.className.indexOf("save") !== -1) { var tds = trg.closest('tr').children; for (var i = 0; i < tds.length; i++) { if (tds[i].className.indexOf("buttons") == -1) { var input = tds[i].getElementsByTagName('input')[0]; var lbl = tds[i].getElementsByTagName('label')[0]; lbl.textContent = input.value; input.classList.add("invisible"); lbl.classList.remove("invisible"); } else { var buttons = tds[i].children; for (var j = 0; j < buttons.length; j++) { if (buttons[j].className.indexOf("save") !== -1) { buttons[j].disabled = true; break; } } } } } }; // тут конец того что я добавил var _rowTpl = tBody.rows[0].cloneNode(true); // Корректируем имена элементов формы var _correctNames = function(row) { var elements = row.getElementsByTagName("*"); for (var i = 0; i < elements.length; i += 1) { if (elements.item(i).name) { if (elements.item(i).type && elements.item(i).type === "radio" && elements.item(i).className && elements.item(i).className.indexOf("glob") !== -1) { elements.item(i).value = RID; } else { elements.item(i).name = RID + "[" + elements.item(i).name + "]"; } } } RID++; return row; }; var _addRow = function(before, tBody) { var newNode = _correctNames(_rowTpl.cloneNode(true)); tBody.insertBefore(newNode, before.nextSibling); }; var _delRow = function(row, tBody) { tBody.removeChild(row); }; _correctNames(tBody.rows[0]); }; })(this); document.addEventListener('DOMContentLoaded', function() { new DynamicTable(document.getElementById("dynamic")); }); body { font-family: "Helvetica"; font-size: medium; } table { border-collapse: collapse; text-align: center; margin: auto; } table td { padding: 0px; height: 30px; width: 140px; } table td input, table td label { width: 100%; height: 100%; border: none; text-align: center; font-size: 16px; } table tbody tr:nth-child(2n), table tbody tr:nth-child(2n) input { background: #a8d7ff; } table tbody tr:hover { background: #fffcb6; } table tbody tr:hover input { background: #fffcb6; } table tbody input:hover { background: #ffd3b6 !important; } table tbody input:active { background: #c27949 !important; } .tblBtn { width: auto; height: 20px; } .buttons { width: 150px; } .invisible { display: none; }
Buttons | Поле 2 | Поле 3 | Поле 4 | Поле 5 |
---|---|---|---|---|
Поле 2 | Поле 3 | Поле 4 | Поле 5 | |
---|---|---|---|---|
Ответ 2
Может Вам просто нужно добавить кнопки сюда:
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий