Цитата:
|
Rise,
![]() Ну вот к примеру 9 строка кода заполняет/высчитывает P0,P1 и т.д. Необходимо, если юзер попытается ввести значение в ячейку таблицы не совпадающее со значением, которое до него высчитала и записала функция (9 строка) вывести ошибку. $.fn.duplicate = function (count, row) { var tmp = []; var n=parseInt($("#cols").val()); for (var i = 0; i < count; i++) { if (this[0].tagName === 'TD') { if (row % 2) { this.html(Math.pow(0.5,n)*($.fn.factorial(n)/($.fn.factorial(i)*$.fn.factorial(n-i)))); } else { this.html(i); } } $.merge(tmp, this.clone().get()); } return this.pushStack(tmp); }; $.fn.factorial=function(i){ function f_Factorial(i){ if (i==0 || i==1) return 1; else return i*f_Factorial(i-1); } var Factorial=f_Factorial(i); return this.length ? $(this).text(Factorial):Factorial }; UPD: ещё пример + пробная реализация, пользователь захочет в X0 записать не 0, а другую цифру. Программа должна выдать ошибку, что в X0 всегда 0 и т.д. var hasEmpty= false; $('output tr:odd:eq(0) td:eq(0)').each(function(i){ if($(this).html() != 0){ alert("Введено не верно !"); hasEmpty= true; return false; }; }) |
Rise,
Логики искать не приходится,это своего рода тз полное абсурда. Пользователь может вводить текст в ячейки (как возможность), но в тоже время если он их изменит, то формула которая считает по значениям из таблицы посчитает неправильно. Ещё возник вопрос гораздо более логичный, можно ли заставить программу работать как с числами с запятой, так и с точкой (в текущ ситуации он числа с запятой зануляет)? Или нужно заменять запятую на точку (опять же как?)? |
Rise,
Не могу понять где следует парсить текст , а не заменять запятую на точку. $('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) }); }); }); |
Rise,
Решил,дать возможность вводить запятую (не меняя на точку). Написал parseFloat в 4 строке. Получаю 0 при вводе запятой. Изменил непонятную строку 17 на var val = +this.value получил NaN UPD: не менял parseInt. Строку #17 поменял на var val =parseFloatExt(this.value) ; и получил замену запятой на точку. |
Rise,
а что всё таки делает строка ? var val = + this.value || 0 ; |
Часовой пояс GMT +3, время: 22:18. |