Как сделать ограничение на ввод?

322
09 марта 2017, 23:43

Есть скрипт, который ограничивает кол-во вводных символов до 3х и разрешены только цифры.

Но баг в том, что после того, как ввел 3 символа, убрал фокус с инпута, а потом еще раз взял в фокус инпут, то 3-й символ удаляется.

Как исправить скрипт так, чтобы можно было вводить ТОЛЬКО цифры, НЕЛЬЗЯ вводить первым 0, ограничить ввод только до 3 символов?

$('body').on('click keypress', '.btn-input', function(key) { 
  $this = $(this); 
  $maxLen = 2; 
  if (key.charCode < 48 || key.charCode > 57) return false; 
  if ($this.val().length > $maxLen) 
    $this.val($this.val().substr(0, $maxLen)); 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<input class="btn-input order-count" type="text" >

https://jsfiddle.net/4gym7k8h/

Answer 1

$('body').on('click keypress', '.btn-input', function(key) { 
  $this = $(this); 
  $maxLen = 2; 
  // ограничение по длине 
  if ($this.val().length > $maxLen) 
    return false; 
  // ограничение по вводу нуля в начале 
  if ($this.val().length == 0 && key.charCode == 48)   
    return false; 
  // ограничение по символам 
  if (key.charCode < 48 || key.charCode > 57)  
    return false;   
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<input class="btn-input order-count" type="text" >

READ ALSO
Не срабатывает событие on input в IE9

Не срабатывает событие on input в IE9

Есть обработчик событий:

315
angular как получить сообщение от сервера?

angular как получить сообщение от сервера?

За пример возьмем форму регистрации

242
Конечный автомат

Конечный автомат

Набросал пример исходя из описания алгоритмаХочу услышать замечания, что стоило бы изменить в этом коде:

287
Сравнение скорости загрузки серверного шрифта и google-шрифта

Сравнение скорости загрузки серверного шрифта и google-шрифта

На англоязычном стаке задавал вопрос о проблемах подключения шрифта через @font-face

317