Почему цифровая клавиатура считается символом?

0

Это работает нормально, но если я использую свой номерный номер (правая сторона), он будет считать его символом и удалит его, но цифры в левой части будут приняты. Я хочу, чтобы моя цифровая панель (правая сторона) была принята.

<script type="text/javascript">

    $("input[name='inputDate']:first").keyup(function(e){
        var key=String.fromCharCode(e.keyCode);
        if(!( key >= 0 && key <= 9 )) {
            $(this).val($(this).val().substr(0,$(this).val().length-1));
        }
    });

</script>     

Обновлено с помощью (уже решено)

     <script type="text/javascript">
        $("input[name='birthdate']:first").on('keyup', function(e){
            var val = $(this).val();
            var key = val.substr(val.length - 1)
            var value=$(this).val();
            if(value.length === 2|| value.length === 5)$(this).val($(this).val()+'/');
            if(!(key>=0&&key<=9))
              $(this).val(val.substr(0,val.length-1));
        });
    </script>
  • 5
    что ты пытаешься здесь делать?
  • 3
    Зачем проверять код ключа, когда вы можете просто проверить введенное значение?
Показать ещё 2 комментария
Теги:

1 ответ

1
Лучший ответ

Попробуйте это, читая последний символ вместо кода клавиши:

$("input[name='inputDate']:first").on('keyup', function(e){
    var val = $(this).val();
    var key = val.substr(val.length - 1)
    if(!(key>=0&&key<=9))
      $(this).val(val.substr(0,val.length-1));
});

JSFiddle

Примечание - это не "защитит" вас от текста, вставленного в поле ввода! Для этого вам нужно связать событие input. Кроме того, очень быстрая типизация может привести к появлению буквы "get trough". Так...

Лучший способ сделать то же самое:

$('input[name="inputDate"]:first').on('input', function(e){
    $(this).val( $(this).val().replace(/[^0-9]+/g, '') );
});

JSFiddle

И наконец...

Если вы создаете поле ввода даты и хотите сделать так, чтобы постоянные посетители могли вводить только действительную дату, проверьте подключенный плагин Masked, или, возможно, другое решение "входной маски".

Имейте в виду, что это все равно можно обойти несколькими способами, и проверка на стороне сервера почти всегда необходима.

  • 0
    Я думал, что ваш код будет работать, но он не работает ... может быть, я попробую маску ввода
  • 0
    @Ghost исправил ошибку и сделал JSFiddles для обоих примеров.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню