Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Заполнение и проверка ячеек таблицы (https://javascript.ru/forum/jquery/65236-zapolnenie-i-proverka-yacheek-tablicy.html)

рони 07.10.2016 12:01

Цитата:

Сообщение от MrSmitt
А как следует проверять значения в ячейках?

если вопрос ко мне, я пас.

MrSmitt 07.10.2016 19:54

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;
           };
        })



MrSmitt 08.10.2016 19:31

Rise,
Логики искать не приходится,это своего рода тз полное абсурда. Пользователь может вводить текст в ячейки (как возможность), но в тоже время если он их изменит, то формула которая считает по значениям из таблицы посчитает неправильно.


Ещё возник вопрос гораздо более логичный, можно ли заставить программу работать как с числами с запятой, так и с точкой (в текущ ситуации он числа с запятой зануляет)? Или нужно заменять запятую на точку (опять же как?)?

MrSmitt 08.10.2016 21:59

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)
 
                });
            });
    });

MrSmitt 08.10.2016 22:26

Rise,
Решил,дать возможность вводить запятую (не меняя на точку). Написал parseFloat в 4 строке. Получаю 0 при вводе запятой.
Изменил непонятную строку 17 на
var val = +this.value

получил NaN


UPD: не менял parseInt. Строку #17 поменял на
var val =parseFloatExt(this.value) ;

и получил замену запятой на точку.

MrSmitt 08.10.2016 22:57

Rise,
а что всё таки делает строка ?
var val = + this.value || 0 ;


Часовой пояс GMT +3, время: 22:18.