Маска для поля ввода любой длины. Автоподгонка к нужному формату. JS, jQuery плагины.
Здавствуйте, есть необходимость создать маску для поля ввода textarea/input по таким условиям: маска не должна ограничивать количество допустимых символов, маска должна вводить только цифры (при попытке ввести любой символ кроме цифры, в поле добавляется пробел), при попытке удалить символ посредством нажатия backspace он удаляется вместе с пробелом от курсора (если он присутствует), для клавиши delete соответственно обратно backspace'у.
Накидайте пожалуйста готовых библиотек, кто уже сталкивался с такой задачей (или похожей).
Написал сам что-то похожее:
$(function() {
$(document).on('change keyup input click', '#yourinput', function() {
$(this).val($(this).val().replace(/[^0-9 ]/g, ''));
$(this).val($(this).val().replace(/\s+/g, ' '));
$(this).val($(this).val().replace(/^\s/g, ''));
});
$('#test-tasks').focusout(function() {
var lastChar = $(this).val().charAt($(this).val().length - 1);
if (lastChar === ' ') {
var t = $(this).val().slice(0, -1);
$(this).val(t);
}
});
});
Вот код рабочий. Замените yourinput на ваш ID тега input.
$(function() {
$(document).on('change keyup input click', '#yourInput', function() {
$(this).val($(this).val().replace(/[^0-9 ]/g, ''));
$(this).val($(this).val().replace(/\s+/g, ' '));
$(this).val($(this).val().replace(/^\s/g, ''));
});
$('#yourInput').focusout(function() {
var lastChar = $(this).val().charAt($(this).val().length - 1);
if (lastChar === ' ') {
var t = $(this).val().slice(0, -1);
$(this).val(t);
}
});
});
Не допускает ввода символов кроме: пробелов и цифр;
Не допускает ввода сдвоенных пробелов;
Не допускает ввода пробела на первое место;
Уничтожает пробел на последнем месте (если такой имеется) при клике на другой элемент.