Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.09.2018, 17:36
Новичок на форуме
Отправить личное сообщение для isys Посмотреть профиль Найти все сообщения от isys
 
Регистрация: 12.09.2018
Сообщений: 2

jQuery input
Здравствуйте. Помоги пожалуйста решить следующий вопрос...
<div class="input_bal">
<input name="sum" type="number" min="20" max="1000" placeholder="количество" class="f_input"/>
</div>


$ = jQuery;

     $(function () {
        $('.input_bal input').on('keyup change blur', function() {
            var val = parseInt($(this).val()),
                max = parseInt($(this).attr('max')),
                min = parseInt($(this).attr('min'))
            ;

            if(val > max) {
                val = max;
            }

            if(val < min) {
                val = min;
            }

            $(this).val(parseInt(val));
        });
    })


Понятное дело что так я не смогу ввести цифру 100, к примеру, после ввода 1 у меня сразу jQuery отработает и установит 20.

Буду благодарен за подсказку.
Ответить с цитированием
  #2 (permalink)  
Старый 12.09.2018, 17:55
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,590

Ну можно поставить таймер на от последнего нажатия.
А так, нативный number например никак с этим не работает: если вводить нажатием на крутилки - то меньше минимального и больше минимального не поставит, а если вручную - просто подсветит по change как невалидный и всё. Думаю тут изобретать ничего не надо.
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 12.09.2018, 18:15
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

<input type="number"/>
	<script>
		var time; 
		document.querySelector('input').addEventListener('input', function(e){
			clearTimeout(time);
			time = setTimeout(()=>{
				if(this.value > 1000) this.value = 1000;
				else if(this.value < 20) this.value = 20;
			},1000);
		});
	</script>
Ответить с цитированием
  #4 (permalink)  
Старый 13.09.2018, 12:22
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,590

j0hnik,
не интуитивно же.
__________________
29375, 35
Ответить с цитированием
  #5 (permalink)  
Старый 13.09.2018, 15:57
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Aetae,
На этом собственно мои полномочия ВСЕ!
Ответить с цитированием
  #6 (permalink)  
Старый 13.09.2018, 16:02
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

<style>
		.f_input:out-of-range{
			border: 2px solid red;
		}
	</style>
<input name="sum" type="number" min="20" max="1000" placeholder="количество" class="f_input"/>
Ответить с цитированием
  #7 (permalink)  
Старый 13.09.2018, 16:39
Новичок на форуме
Отправить личное сообщение для isys Посмотреть профиль Найти все сообщения от isys
 
Регистрация: 12.09.2018
Сообщений: 2

@j0hnik Спасибо! С подсветкой идея даже лучше, как по мне.
Очень хорошо!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическое копирование значения из input в input с одинаковыми атрибутами name ami_moor jQuery 2 10.08.2016 17:02
Динамический подсчет в таблице muraig jQuery 5 11.10.2014 16:54
Нужно связать input и ползунок jQuery Slider / jQuery ui IffeR jQuery 4 16.08.2014 18:01
При добавлении DOCTYPE "плывут" размеры input type=text Demath (X)HTML/CSS 4 08.07.2012 19:27
Как передать текст в input в модальное окно открытое jquery SpiritDark Элементы интерфейса 0 28.04.2012 21:46