ОНОВЛЕННЯ
Я виправив код, який мав помилку, і додав var, який називається key, для зберігання натиснутого коду за допомогою keyCode, і який залежить від браузера.
var key = e.which || e.keyCode;
Дякую Дональде.McLean :)
Якщо ви хочете перевірити, чи пишете ви цифри під час набору тексту (і уникайте введення інших символів у поле введення), ви можете скористатися цією простою функцією та визначити дозволені елементи (сюди входить те, що ви хочете відфільтрувати). Таким чином ви можете вибрати не тільки цілі числа, але, наприклад, певну групу символів. Приклад заснований на jQuery, щоб приєднати його до поля введення.
$('#myInputField').keypress(function(e)
{
var key = e.which || e.keyCode;
if (!(key >= 48 && key <= 57) &&
(key !== 8) &&
(key !== 9) &&
(key !== 37) &&
(key !== 39) &&
(key !== 46))
{
e.preventDefault();
return false;
}
});
Якщо ви використовуєте інший ключ, ніж визначений, він не з'явиться в полі. І тому, що в наші дні Angular.js стає сильнішим. це директива, яку ви можете створити, щоб зробити це в будь-якому полі веб-програми:
myApp.directive('integer', function()
{
return function (scope, element, attrs)
{
element.bind('keydown', function(e)
{
var key = e.which || e.keyCode;
if (!(key >= 48 && key <= 57) &&
(key !== 8) &&
(key !== 9) &&
(key !== 37) &&
(key !== 39) &&
(key !== 46))
{
e.preventDefault();
return false;
}
});
}
});
Але що станеться, якщо ви хочете використовувати ng-repeatі вам потрібно застосовувати цю директиву лише в певній кількості полів. Ну, ви можете перетворити верхню директиву на таку, яка готова визнати справжнє чи хибне значення, щоб мати можливість вирішити, яке поле це буде впливати.
myApp.directive('rsInteger', function() {
return {
restrict: 'A',
link: function (scope, element, attrs) {
if (attrs.rsInteger === 'true') {
element.bind('keydown', function(e)
{
var key = e.which || e.keyCode;
if (!(key >= 48 && key <= 57) &&
(key !== 8) &&
(key !== 9) &&
(key !== 37) &&
(key !== 39) &&
(key !== 46))
{
e.preventDefault();
return false;
}
});
}
}
}
});
Щоб використовувати цю нову директиву, вам просто потрібно зробити це в тексті типу введення, наприклад, наприклад, наприклад:
<input type="text" rs-integer="true">
Сподіваюся, це допоможе вам.