Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Нужна помощь по input type="number" (https://javascript.ru/forum/misc/52540-nuzhna-pomoshh-po-input-type%3D-number.html)

Sleek 23.12.2014 16:54

Нужна помощь по input type="number"
 
Ребят приветствую. Начиная свое изучение в JS сразу столкнулся с такой проблемой. Имеется код, запрещающий ввод любых символов, кроме цифр. Также надо сделать так, чтобы нельзя было оставлять поле пустым, у меня получилось сделать так, но он при любом значении, заменяет атрибут на min="1". А мне нужно чтобы такое выдавало только при пустом значении. Помогите разобраться в коде :)
$(document).on ("click", function(){
	$('input[type="number"]').keypress(function( b ){
    var C = /[0-9\x25\x27\x24\x23]/;
    var a = b.which;
    var c = String.fromCharCode(a);
    return !!(a==0||a==8||a==9||a==13||c.match(C));
	});
});
$('input[type="number"]').on ('blur',function(){
  if($(this).val()){
    $(this).val($(this).attr('min'));
  }
});

Sleek 23.12.2014 17:32

В дополнение к 1 вопросу хочу добавить. При нажатии на кнопку в корзину, открывается модальное окно, которое имеет форму "Возможно это вас заинтересует", в которой тоже несколько товаров, но на них этот код почему-то не распространяется...Как реализовать live event?

danik.js 23.12.2014 17:37

А че эт ты делаешь. Почему по каждому клику на странице ты вешаешь новый обработчик keypress? Плодишь то есть.
Цитата:

Сообщение от Sleek
if($(this).val())

Добавь отрицание тут.
Цитата:

Сообщение от Sleek
/[0-9\x25\x27\x24\x23]/

В input[type=number] не может быть ничего кроме чисел и десятичного разделителя. Всякие проценты и решетки браузер не пропустит. Да и нафиг оно тебе нужно в инпуте?

danik.js 23.12.2014 17:38

live:
$(document).on ('blur', 'input[type="number"]', ...)
Т.е. делегируем предку вездесущному обработку сего события.

Sleek 23.12.2014 18:01

Я себе уже этими понятиями и обработчиками всю голову сломал. Можете кто-нибудь дать готовый вариант, с которым можно работать? Потому, что у меня уже все в кашу уже сбилось...

Deff 24.12.2014 12:39

Sleek,
:) А вообще без скриптов разве input[type="number"] не выполняет требуемое ?
Если его не меняют, он сразу и стоит на минимуме, нун ток вставить начальное value="xx" = min
<input type="number" step=5 min="25" value="25">

Sleek 24.12.2014 13:37

Цитата:

Сообщение от Deff (Сообщение 348080)
Sleek,
:) А вообще без скриптов разве input[type="number"] не выполняет требуемое ?
Если его не меняют, он сразу и стоит на минимуме, нун ток вставить начальное value="xx" = min
<input type="number" step=5 min="25" value="25">

Прикол в том, чтобы там стоял запрет на ввод других символов, кроме цифр - это раз. А второе - это нужно чтобы, если человек оставляет пустое значение в инпуте, когда выбирает товар, нужно чтобы там выставляется минимальное значение. Без скриптов тут никак...

Deff 24.12.2014 13:47

Sleek, Ну тады:
<input id="inputScale" type="range" min="25" max="100" step="12.5" value="25" >

:)

danik.js 24.12.2014 13:50

Цитата:

Сообщение от Sleek
дать готовый вариант

За готовым в раздел "Работа" обращайся.
Цитата:

Сообщение от Sleek
если человек оставляет пустое значение в инпуте

Так ты пропиши атрибут value с нужным значением. Но скрипт все равно нужен, на случай если юзер сотрет значение.


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