Доброе время суток! В сегодняшней статье разберем как сделать фильтрацию в тектовом поле на jQuery.
Нам нужно запретить пользователю ввод в текстовое поле формы
<input type="text" class="num">
любых данных кроме цифр. Для этого воспользуемся библиотекой jQuery и функцией .keydown:
$(document).ready(function() {
$("input.num").keydown(function(event) {
// Разрешаем нажатие клавиш backspace, Del, Tab и Esc
if ( event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 ||
// Разрешаем выделение: Ctrl+A
(event.keyCode == 65 && event.ctrlKey === true) ||
// Разрешаем клавиши навигации: Home, End, Left, Right
(event.keyCode >= 35 && event.keyCode <= 39)) {
return;
}
else {
// Запрещаем всё, кроме клавиш цифр на основной клавиатуре, а также Num-клавиатуре
if ((event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105 )) {
event.preventDefault();
}
}
});
});
В данном примере ввода только цифр используются цифры не только из основной основной клавиатуры, но и цифры из дополнительной, цифровой клавиатуры, так называемой NUM-клавиатуры.
Также нельзя забывать делать проверку ввода данных на стороне сервера:
<?php
/** Чтобы проверить на стороне сервера на наличие только цифр */
if(is_numeric($_POST['input'])) {
// проверка пройдена
}
Frameworks.su Шпаргалка вебмастера
Такой вариант позволяет вводить ещё и спецсимволы :( через shift+num, а это ломает весь сценарий ;-(
$('.oform input').on('input', function () {
if (this.value != this.value.replace(/[^0-9\.]/g, '')) {
this.value = this.value.replace(/[^0-9\.]/g, '');
}
return false;
});