Это работает нормально, но если я использую свой номерный номер (правая сторона), он будет считать его символом и удалит его, но цифры в левой части будут приняты. Я хочу, чтобы моя цифровая панель (правая сторона) была принята.
<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>
Попробуйте это, читая последний символ вместо кода клавиши:
$("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));
});
Примечание - это не "защитит" вас от текста, вставленного в поле ввода! Для этого вам нужно связать событие input
. Кроме того, очень быстрая типизация может привести к появлению буквы "get trough". Так...
$('input[name="inputDate"]:first').on('input', function(e){
$(this).val( $(this).val().replace(/[^0-9]+/g, '') );
});
Если вы создаете поле ввода даты и хотите сделать так, чтобы постоянные посетители могли вводить только действительную дату, проверьте подключенный плагин Masked, или, возможно, другое решение "входной маски".
Имейте в виду, что это все равно можно обойти несколькими способами, и проверка на стороне сервера почти всегда необходима.