Показать сообщение отдельно
  #1 (permalink)  
Старый 06.10.2016, 12:37
Интересующийся
Отправить личное сообщение для MrSmitt Посмотреть профиль Найти все сообщения от MrSmitt
 
Регистрация: 28.07.2016
Сообщений: 16

Заполнение и проверка ячеек таблицы
Строится след динамическая таблица (размерность 4xn). Ячейки таблицы заполняются от 0 до n (n- число из inputа с id="cols").
Необходимо чтобы 2 строка заполнялась от 0 до n как сейчас, а 4 строка по формуле , где p=0,5;q=0,5;n=число из inputа с id="cols", k=номер ячейки в таблице.



Код:
(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('&nbsp;')
						 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)

				});
			});
	});
});
Как вообще разделить процесс заполнения строк таблицы?

Последний раз редактировалось MrSmitt, 06.10.2016 в 13:27.
Ответить с цитированием