Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как не дать пользователю ввести неправильное значение в текстовый инпут ? (https://javascript.ru/forum/events/27279-kak-ne-dat-polzovatelyu-vvesti-nepravilnoe-znachenie-v-tekstovyjj-input.html)

boraldo 08.04.2012 00:07

Как не дать пользователю ввести неправильное значение в текстовый инпут ?
 
Я хотел проверять при вводе значение, которое получается и не давать ввести символ, приводящий к невалидности значения.
Проблема в том, что в keypress у меня ещё старое значение, а в keyup не срабатывает return false;

Можно конечно в keypress запомнить старое значение, а в keyup его восстановить, если новое значение неправильное, но неужели нет более простого способа ?

T-sh 08.04.2012 00:15

а зачем в keyup делать return false?

по keyup получаешь значение инпута, если там что-то лишнее (запрещенный символ), урезаешь значение на 1 символ и возвращаешь обратно инпуту, если ничего лишнего — ничего не делаешь :)

Раед 08.04.2012 00:16

Цитата:

Сообщение от boraldo
в keypress у меня ещё старое значение

странно всегда думал что кипресс происходит уже после обновления инпута :blink:

w46823 08.04.2012 14:25

http://learn.javascript.ru/play/tuto...m/percent.html

razerxxx 12.04.2012 15:43

$(".some_input").keypress(function(e) {
        var keyCode_valid = [8, 9, 13, 37, 38, 39, 40, 46, 35];
        var symbol = String.fromCharCode(e.which);
        if ($(this).attr('type') == 'tel') {
            var tel_valid = "0123456789- ()+";

            // TODO визуальный сигнал
            if (tel_valid.indexOf(symbol) == -1 && $.inArray(e.keyCode, keyCode_valid) == -1) { 
                return false
            };
        };
})

здесь keyCode_valid - коды символов клавиш, на которые можно наживать (стрелки, backspace, и т.п)
symbol - символ нажатой клавиши. Вобщем в данном скрипте если нажмешь не на тот символ, то ничего не происходит


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