Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #61 (permalink)  
Старый 25.08.2017, 20:49
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от MC-XOBAHCK
Думаю мне подойдёт вариант с добавлением ещё одного имени класса.
Если так, то тогда использовать вторым именем класса типа name-name, где первая часть идентификатор всех парных полей ввода, а вторая часть идентификатор группирующий поля. Например для указанного кода для полей скатов 1 и 2 pair-a, а для полей скатов 4 и 5 pair-b.

В код после строки 041 добавить обработчик (вернее условие):

if(/pair/.test(this.className)) $('input.'+/pair.+/.exec(this.className)[0]).val(this.value);
Ответить с цитированием
  #62 (permalink)  
Старый 25.08.2017, 21:18
Аватар для MC-XOBAHCK
Профессор
Отправить личное сообщение для MC-XOBAHCK Посмотреть профиль Найти все сообщения от MC-XOBAHCK
 
Регистрация: 06.08.2017
Сообщений: 473

Я сдаюсь
Не знаю даже что сказать...
Ответить с цитированием
  #63 (permalink)  
Старый 26.08.2017, 01:40
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от MC-XOBAHCK
Я сдаюсь
Я тоже, уже забывается все. Поля ввода кешируются же, поэтому нужно так:

if(~this.className.indexOf('pair')) side.not(this).filter('.'+/pair\S+/.exec(this.className)[0]).val(this.value);

Последний раз редактировалось laimas, 26.08.2017 в 03:50.
Ответить с цитированием
  #64 (permalink)  
Старый 26.08.2017, 09:23
Аватар для MC-XOBAHCK
Профессор
Отправить личное сообщение для MC-XOBAHCK Посмотреть профиль Найти все сообщения от MC-XOBAHCK
 
Регистрация: 06.08.2017
Сообщений: 473

Спасибо вам!
Я имел в виду что первый вариант работал, проблем не вызывал и очень просто назначать нужные мне поля.
Ответить с цитированием
  #65 (permalink)  
Старый 26.08.2017, 10:10
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от MC-XOBAHCK
первый вариант работал, проблем не вызывал
Первый вариант, это при каждом изменении в поле ввода обход DOM дерева с поиском в нем полей, что затратно. Сценарий при загрузке страницы такой поиск производит один раз и запоминает все поля ввода в переменной side. Остается по стилю текущего поля найти в этом кешированном JQ наборе "родственные" поля, что эффективнее.

Кроме того, в первом варианте шаблон рег. выражения будет корректно работать только в том случае, если имя класса описывающего парные поля ввода указано последним в списке, иначе будет возвращено все начиная с pair. Второй вариант лишен этого недостатка, имя класса парных полей может располагаться в начале, в середине, в конце списка.

По поводу "калькулятор выдаёт результат после ввода двух значений". Перед передачей введенных значений в функцию расчета, значение пустого поля приравнивается к 0 (строка 049 кода). Исходным было то, что практически во всех расчетах присутствует умножение, и в случае пустых полей функция также вернет 0.

При выводе рассчитанных площадей в строке 055 кода проверка - если функция вернула значение, значит вывод площади, в противном случае пустая строка.

То есть нужно проверить логику расчета и наличие 0. Если нулевое значение поля на расчет не влияет (в любом случае будет значение), то требуется более расширенная проверка, например на заполнение всех полей.

Последний раз редактировалось laimas, 26.08.2017 в 10:12.
Ответить с цитированием
  #66 (permalink)  
Старый 26.08.2017, 11:05
Аватар для MC-XOBAHCK
Профессор
Отправить личное сообщение для MC-XOBAHCK Посмотреть профиль Найти все сообщения от MC-XOBAHCK
 
Регистрация: 06.08.2017
Сообщений: 473

Я понял.
Думаю для моего уровня знаний этот баг будет несущественной проблемой. Главную задачу калькулятор делает. Пока оставлю так как есть, а через полгода, год - вернусь к редактированию этой функции. Мне ещё надо много учиться, чтобы лезть своими кривыми руками в правку такого скрипта : )
Ответить с цитированием
  #67 (permalink)  
Старый 11.04.2022, 18:12
Аспирант
Отправить личное сообщение для hdma Посмотреть профиль Найти все сообщения от hdma
 
Регистрация: 28.05.2012
Сообщений: 85

Здравствуйте! В виджете из архива на все поисковые поля назначена функция, которая заменяет некоторые введенные символы на другие, например, букву Ё на Е. Сокращенно функция выглядит так —

function fix(obj) {
   obj.value = obj.value.replace(/[ё]/g, 'е');
   obj.value = obj.value.replace(/[áàâǎăãảạäåāąấầẫẩậắằẵẳặǻ]/g, 'а');
   obj.value = obj.value.replace(/[éèêěĕẽẻėëēęếềễểẹệ]/g, 'е');
   obj.value = obj.value.replace(/[óòŏôốồỗổǒöőõøǿōỏơớờỡởợọộ]/g, 'о');
}


В коде виджета строк больше, и замечено, что на некоторых версиях андроида при вводе букв — ранее введенное дублируется в input-окне. Есть ли другой способ прописать подобный функционал на input onkeyup?

Последний раз редактировалось hdma, 11.04.2022 в 18:14.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Простейший калькулятор на JS. Нужна помощь. Siverena Общие вопросы Javascript 2 06.04.2017 13:42
Заставить калькулятор считать дробные числа с запятой. webmanss Элементы интерфейса 3 10.03.2016 16:07
Нужно чтобы калькулятор выводил в резултатах только целые числа Valtar7 Общие вопросы Javascript 2 18.08.2015 10:43
калькулятор на javascript vera0907 Events/DOM/Window 7 24.03.2015 15:12
JS задача. Взаимно простые числа sashok Общие вопросы Javascript 5 23.11.2014 10:16