Символы не отображаются на вводимом тексте во время события нажатия клавиши - knockoutjs - PullRequest
0 голосов
/ 05 марта 2020

Я хочу ограничить ввод символов алфавита, чтобы я создал функцию и связал ее с вводом, используя data-bind на html, здесь это

<input type="text" data-bind="valueUpdate: 'afterkeydown', event: { keypress: function(data, event) { restrictAlphabetCharacter(event); } }" placeholder="Year" maxlength="4">

И это моя функция

restrictAlphabetCharacter(e) {
        var keyCode = (e.which) ? e.which : e.keyCode;
        if ((keyCode >= 48 && keyCode <= 57)) {
            return true;
        }
    }

В чем может быть причина того, что символы не отображаются внутри текстового поля. Спасибо заранее.

1 Ответ

0 голосов
/ 05 марта 2020

Ваш код допускает символы со значением keyCode от 48 до 57, которые являются только цифрами (т. Е. От 0 до 9). Если вы хотите разрешить только буквы алфавита, ограничьте keyCode от 65 до 90 для прописных букв и от 97 до 122 для строчных букв:

function restrictAlphabetCharacter(data, e) {
    var keyCode = (e.which) ? e.which : e.keyCode;
    if ((keyCode >= 65 && keyCode <= 90) ||
        (keyCode >= 97 && keyCode <= 122)) {
        return true;
    }
}
ko.applyBindings();
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<input type="text" data-bind="valueUpdate: 'afterkeydown', event: { keypress: restrictAlphabetCharacter }" placeholder="Year" maxlength="4">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...