Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Калькулятор - числа с запятой/точкой (https://javascript.ru/forum/misc/70105-kalkulyator-chisla-s-zapyatojj-tochkojj.html)

laimas 25.08.2017 20:49

Цитата:

Сообщение от 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);

MC-XOBAHCK 25.08.2017 21:18

Я сдаюсь :agree:
Не знаю даже что сказать...

laimas 26.08.2017 01:40

Цитата:

Сообщение от MC-XOBAHCK
Я сдаюсь

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

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

MC-XOBAHCK 26.08.2017 09:23

Спасибо вам!
Я имел в виду что первый вариант работал, проблем не вызывал и очень просто назначать нужные мне поля.

laimas 26.08.2017 10:10

Цитата:

Сообщение от MC-XOBAHCK
первый вариант работал, проблем не вызывал

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

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

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

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

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

MC-XOBAHCK 26.08.2017 11:05

Я понял.
Думаю для моего уровня знаний этот баг будет несущественной проблемой. Главную задачу калькулятор делает. Пока оставлю так как есть, а через полгода, год - вернусь к редактированию этой функции. Мне ещё надо много учиться, чтобы лезть своими кривыми руками в правку такого скрипта : )

hdma 11.04.2022 18:12

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

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?


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