+
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
/**
|
||||
* Created by moskitos80 on 23.08.14.
|
||||
*/
|
||||
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);
|
||||
}
|
||||
};
|
||||
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);
|
||||
Reference in New Issue
Block a user