(function ($) {
var opts = {
row: 2,
col: 2,
add: 'html'
};
var methods = {
init: function (o) {
var table = $('<table />');
opts = $.extend(opts, o);
if (opts.row <= 0 || opts.col <= 0) {
alert('Некорректные значения!');
return false;
}
for (var i = 0; i < opts.row; i++) {
table.append(methods.makeRow(i));
}
alert('Введите значения СВ и соответствующие им вероятности');
this[opts.add](table);
},
makeRow: function (i) {
var L = methods.letter(i);
return $('<tr />', {
html: $('<td />').duplicate(opts.cols)
}).duplicate(2)
.first()
.find('td').each(function (i, el) {
$(el).html(L + '<sub>' + i + '</sub>');
})
.end()
.prepend($('<td />', {
attr: {
rowspan: 2
},
text: L
})).end();
},
letter: function (i) {
return ['X', 'P'][i]
}
};
$.fn.duplicate = function (count) {
var tmp = [];
for (var i = 0; i < count; i++) {
if (this[0].tagName === 'TD') {
//this.html(' ')
this.html(i)
// this.text(0)
}
$.merge(tmp, this.clone().get());
}
return this.pushStack(tmp);
};
$.fn.generateTable = function (o) {
methods.init.apply(this, arguments);
return this
};
}(jQuery));
$('form').on('submit', function (e) {
e.preventDefault();
$('output').generateTable({
cols: parseInt($('#cols', this).val())+1,
add: 'html'
}).find("tr:odd ")
.each(function (indx, tr) {
var minMax = [7, 1];
$('td', tr).click(function () {
var text = $(this).text(),
varX = $("<input/>", {
"value": text,
"click": function (event) {
event.stopPropagation()
},
"blur": function () {
var val = +this.value || 0 ;
if (val < 0 || val > minMax[indx] ) {
alert("Диапазон от 0 до 7 ");
val = text;
};
$(this).parent().html(val)
}
});
$(this).html(varX);
varX.setCursorPosition(text.length)
});
});
});
});
|