j0hnik,
При чередовании вводов и плюсов в какой-то момент получается NaN комнат Не понял пока, с чем связано - отвлекают. |
Dilettante_Pro,
Видимо пытались текст вводить а не цифры |
j0hnik,
val--; за ноль уходит и ap выдаёт -1 undefined |
j0hnik,
При плюсе или минусе после редактирования значения без очистки поля - менять только цифры - выдает ошибку. Немного помогает - при сохранении пробела el.onchange = e => { val = el.value.split(" ")[0]; ap(parseInt(el.value),i); } А вообще нужен регексп по прочистке значения Все, пока убежал. |
рони,
if (val > 0) добавил проверку |
Dilettante_Pro,
Исправил. |
так, сейчас буду разбираться.
1 вопрос. Допустим у меня на странице 30 инпутов. Одни обычные текстовые для личных данных и адреса. И 15 инпутов в которых нужно применять вот этот скрипт с плюсами, минусами и выводом текста. Как теперь указать скрипту те инпуты, в которые ему нужно лезть, а в какие не нужно? 2 вопрос. Допустим идет 3 инпута в которых склоняется одно слово, потом 2 инпута в которых склоняется другое слово. Скрипт получается идет сверху вниз по всем инпутам и в них делает подстановки? Т.е. нужно в массиве просто 3 раза подряд прописать одно и тоже? |
Один ответ на 2 вопроса, присвоить определенные классы и использовать их!
и в массиве 3 раза прописывать не надо. не гуд это. |
Цитата:
inp = document.querySelectorAll('input'); добавить что только инпуты с определенным классом. а вот про массив не понял. допустим отфильтровали инпуты. но дальше то как я понимаю он подставляет последовательно данные из массива. т.е. если у меня 5 инпутов, то в массиве должно быть 5 блоков? |
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <button>-</button><input type="text"><button>+</button><br> <button>-</button><input type="text" class="san"><button>+</button><br> <button>-</button><input type="text" class="san"><button>+</button><br> <button>-</button><input type="text" class="kom"><button>+</button><br> <button>-</button><input type="text"><button>+</button><br> <button>-</button><input type="text" class="chas"><button>+</button><br> <button>-</button><input type="text"><button>+</button><br> <script> var sklon = (n, obj) => n+" "+obj[(n%100>4 && n%100<20)?2:[2, 0, 1, 1, 1, 2][(n%10<5)?n%10:5]]; var obj = {kom:['комната', 'комнаты', 'комнат'], san:['санузел', 'санузла', 'санузлов'], chas:['час', 'часа', 'часов']}, inp = document.querySelectorAll('.san, .kom, .chas'); inp.forEach((el, i)=>{ el.value = 0; var val, cl = el.className; el.previousElementSibling.onclick = e => { val = parseInt(el.value); if (val > 0) val--; el.value = sklon(val, obj[cl]); }; el.nextElementSibling.onclick = e => { val = parseInt(el.value); val++; el.value = sklon(val, obj[cl]); }; el.onchange = e => { val = parseInt(el.value); e.target.value = sklon(val, obj[cl]); }; }); </script> </body> </html> вместо класса можно использовать любые другие доступные атрибуты. |
Часовой пояс GMT +3, время: 03:27. |