Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.09.2018, 15:47
Новичок на форуме
Отправить личное сообщение для naplekov Посмотреть профиль Найти все сообщения от naplekov
 
Регистрация: 20.03.2018
Сообщений: 9

Вызвать клик по стрелкам input[type="number"]
Есть код
<input type="number" class="input-text" value="0" min="0" max="">

как вызвать клик по стрелкам внутри input
нашел код такой:
<button id="elem" onclick="alert('Клик');">Автоклик</button>
<script>
  var event = new Event("click");
  elem.dispatchEvent(event);
</script>

НО как его применить именно к стрелкам блока input?

в jqvery есть событие .keyup (), но не как не могу разобраться можно ли его сюда применять и главное как?
Ответить с цитированием
  #2 (permalink)  
Старый 13.09.2018, 16:09
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,485

Сообщение от naplekov
как вызвать клик по стрелкам внутри input
Скорее всего никак.

<input type="number" class="input-text" value="0" min="0" max="" id="input">
<span id="increment">Больше</span>
<span id="decrement">Меньше</span>
<script>
(function() {
    const input = document.querySelector('#input');
    [].forEach.call(document.querySelectorAll('#increment,#decrement'), function(node, i) {
        node.addEventListener('click', function() {
            const step = (input.step || 1) * (!i ? 1 : -1);
            let val = +input.value + step;

            if ('max' in input && input.max.length && val > input.max)
                val = input.max;
            else if ('min' in input && input.min.length && val < input.min)
                val = input.min;

            input.value = val;
        });
    });
})();
</script>
Ответить с цитированием
  #3 (permalink)  
Старый 13.09.2018, 16:24
Новичок на форуме
Отправить личное сообщение для naplekov Посмотреть профиль Найти все сообщения от naplekov
 
Регистрация: 20.03.2018
Сообщений: 9

Сообщение от Nexus
Скорее всего никак.
Править код нет возможности. реализовывать отдельными кнопками не получится.
Ответить с цитированием
  #4 (permalink)  
Старый 13.09.2018, 16:28
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,485

naplekov, зачем вам нажимать на стрелочки инпута?
Ответить с цитированием
  #5 (permalink)  
Старый 13.09.2018, 16:31
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

naplekov,
тогда value меняйте
<input type="number" class="input-text" value="0" min="0" max="">
<script>
var inp = document.querySelector('.input-text')
inp.value++; //или --
// если что то прязано
// inp.dispatchEvent(new Event("change")); // или input
</script>
Ответить с цитированием
  #6 (permalink)  
Старый 13.09.2018, 17:09
Новичок на форуме
Отправить личное сообщение для naplekov Посмотреть профиль Найти все сообщения от naplekov
 
Регистрация: 20.03.2018
Сообщений: 9

Сообщение от Nexus
зачем вам нажимать на стрелочки инпута?
Что бы превратить его в checkbox. по первому клику добавить по второму убавить
Сообщение от j0hnik
тогда value меняйте
Я так уже пробовал. там все не так просто. при клике в коде меняется еще и атрибуты других блоков.
Ответить с цитированием
  #7 (permalink)  
Старый 13.09.2018, 20:12
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Сообщение от naplekov
Я так уже пробовал. там все не так просто. при клике в коде меняется еще и атрибуты других блоков.
Строку 6 пробовали раскомментировать? если не сработает то так попробуйте.
inp.dispatchEvent(new Event("input"));
Ответить с цитированием
  #8 (permalink)  
Старый 13.09.2018, 20:20
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

naplekov,
всякий раз когда будите менять value вызывайте событие
//это
inp.dispatchEvent(new Event("input"));
//или это
inp.dispatchEvent(new Event("change"));
Ответить с цитированием
  #9 (permalink)  
Старый 14.09.2018, 12:45
Новичок на форуме
Отправить личное сообщение для naplekov Посмотреть профиль Найти все сообщения от naplekov
 
Регистрация: 20.03.2018
Сообщений: 9

Сообщение от j0hnik Посмотреть сообщение
naplekov,
всякий раз когда будите менять value вызывайте событие
//это
inp.dispatchEvent(new Event("input"));
//или это
inp.dispatchEvent(new Event("change"));
Сообщение от j0hnik
inp.dispatchEvent(new Event("change"));
Спасибо! Именно это и сработало!
Ответить с цитированием
  #10 (permalink)  
Старый 14.09.2018, 17:15
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,485

naplekov, полагаю это ваш "отзыв"?
Цитата:
Вы пишите "никак" - это выход. предлагайте альтернативы или не пишите вовсе
Если не писать вовсе, то ваш вопрос так бы и остался нерешенным, поскольку кликнуть на нативную стрелочку, которая имеется у input[type="number"] невозможно. В этом случае вы бы остались недовольны тем, что вас просто проигнорировали.

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

Не вижу причин для недовольства моим ответом, тем не менее, прошу прощения за подобный ответ.
Всего наилучшего.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JS / jQuery — почему не получается выполнить программный клик по кнопке? antonium Events/DOM/Window 1 17.07.2018 01:28
Консоль: вызвать срабатывание обработчика событий Ginibe Events/DOM/Window 0 08.02.2015 18:17
сломался клик средней кнопкой Gvozd Сайт Javascript.ru 8 08.06.2012 17:57
Как при быстром многократном клике по кнопке обрабатывать только первый клик battrack jQuery 3 22.03.2012 09:47
вызвать принудительно событие olgatcpip Общие вопросы Javascript 5 13.11.2009 11:07