Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 07.10.2016, 12:01
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

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

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


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

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


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

Последний раз редактировалось MrSmitt, 08.10.2016 в 19:40.
Ответить с цитированием
  #14 (permalink)  
Старый 08.10.2016, 21:59
Интересующийся
Отправить личное сообщение для MrSmitt Посмотреть профиль Найти все сообщения от MrSmitt
 
Регистрация: 28.07.2016
Сообщений: 16

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)
 
                });
            });
    });
Ответить с цитированием
  #15 (permalink)  
Старый 08.10.2016, 22:26
Интересующийся
Отправить личное сообщение для MrSmitt Посмотреть профиль Найти все сообщения от MrSmitt
 
Регистрация: 28.07.2016
Сообщений: 16

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

получил NaN


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

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

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

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по ширине ячеек таблицы demoniqus Общие вопросы Javascript 4 02.02.2014 13:19
Заполнение таблицы Hisot Элементы интерфейса 33 15.07.2013 21:16
Подсветка родительских ячеек таблицы Demath Элементы интерфейса 10 11.02.2013 14:33
IE 8: баг при динамическом display=none; у ячеек таблицы SegaMega Элементы интерфейса 0 21.09.2012 06:47
Не выводится содержимое ячеек таблицы SER Events/DOM/Window 2 23.06.2011 17:48