Цитата:
|
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, время: 05:02. |