Вопрос по javascript, jquery – Как разрешить ввод только определенных символов с помощью jQuery?

1

Как мне разрешить специальные символы, такие как дефис, запятую, косую черту, клавишу пробела, клавишу возврата, клавишу удаления вместе с буквенно-цифровыми значениями и ограничить остальное в jQuery?

Поскольку этот критерий (разрешенные символы / входные значения) варьируется от поля к полю, я хотел бы сделать его в качестве служебного метода, который принимает идентификатор поля ввода и разрешенные символы в качестве параметров. например: limitCharacters (textid, pattern)

У вас есть примеры кода ваших попыток? o01
Спасибо вам всем за вашу помощь ... Теперь мне нужно сравнить неанглийские символы ... такие как Azhari .. Как мне это сделать с сопоставлением с образцом? По сути, мое приложение должно поддерживать символы как английского, так и ажариского языка. Здесь я поражен. Пожалуйста, помогите мне ... net user

Ваш Ответ

3   ответа
1

но в формате плагина jQuery. В этом примере разрешены только цифры и полные остановки.

Вы можете позвонить, написав:

$("input").forceNumeric();

И плагин:

            jQuery.fn.forceNumeric = function () {

             return this.each(function () {
                 $(this).keydown(function (e) {
                     var key = e.which || e.keyCode;

                     if (!e.shiftKey && !e.altKey && !e.ctrlKey &&
                     // numbers   
                        key >= 48 && key <= 57 ||
                     // Numeric keypad
                        key >= 96 && key <= 105 ||
                     // comma, period and minus, . on keypad
                        key == 190 || key == 188 || key == 109 || key == 110 ||
                     // Backspace and Tab and Enter
                        key == 8 || key == 9 || key == 13 ||
                     // Home and End
                        key == 35 || key == 36 ||
                     // left and right arrows
                        key == 37 || key == 39 ||
                     // Del and Ins
                        key == 46 || key == 45)
                        return true;

                    return false;
                });
            });
        }
0

David решение для клавиш-модификаторов, таких какbackspace а такжеdelete и этот код ниже для символов:

var chars = /[,\/\w]/i; // all valid characters
$('input').keyup(function(e) {
  var value = this.value;
  var char = value[value.length-1];
  if (!chars.test(char)) {
    $(this).val(value.substring(0, value.length-1));
  }
});

Кроме того, у меня возникли некоторые проблемы сkeydown поэтому я делаю это наkeyup.

Demo: http://jsfiddle.net/elclanrs/QjVGV/ (попробуйте ввести точку. или точка с запятой;)

Сбой, если вы держите. нажата клавиша
5

& # x200B; Вы можете просто проверить код клавиши наkeydown и бегиpreventDefault() если совпадение:

$('input')..which == 8) { // 8 is backspace
        e.preventDefault();
    }
});​

http://jsfiddle.net/GVb6L/

Если вам нужно ограничиться определенными символами И keyCodes + превратить его в плагин jQuery, попробуйте что-то вроде:

$.fn.restrict = function( chars ) {
    return this.keydown(function(e) {
        var found = false, i = -1;
        while(chars[++i] && !found) {
            found = chars[i] == String.fromCharCode(e.which).toLowerCase() || 
                    chars[i] == e.which;
        }
        found || e.preventDefault();
    });
};

$('input').restrict(['a',8,'b']);​

http://jsfiddle.net/DHCUg/

Это не работает с некоторыми символами, такими как 0 и / например, но это хорошая функция для ограничения букв и цифр.
Это не работает с точкой (.), Кстати.

Похожие вопросы