Я создал скрипт, который преобразует набранный пользователем символ нажатия клавиши в другой нужный символ и помещает его в поле ввода.Он очень хорошо работает на настольном компьютере, но совершенно бесполезен для устройств с сенсорным экраном.
$("#test").on("keydown", function(e) {
var keyPressed = e.key;
var userInput = $(this).val();
var regex = /[abc]+/g;
var keysAllowed = ["Backspace", " ", "Enter", "Delete"];
if (regex.test(keyPressed) == true || keysAllowed.indexOf(keyPressed) !== -1) {
if (keyPressed == "a") {
e.preventDefault();
var keyPressedConverted = "b";
userInput += keyPressedConverted;
$("#test").val(userInput);
} else if (keyPressed == "b") {
e.preventDefault();
var keyPressedConverted = "c";
userInput += keyPressedConverted;
$("#test").val(userInput);
} else if (keyPressed == "c") {
e.preventDefault();
var keyPressedConverted = "d";
userInput += keyPressedConverted;
$("#test").val(userInput);
}
} else {
e.preventDefault();
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="test" type="text">
Я пытался поставить .on("keydown input")
, .on("keydown touchend")
, .on("input touchend")
и все равно скрипт не работает.
Пока яя пытаюсь заставить этот скрипт работать в браузере Android, но я хотел бы работать на каждом устройстве с сенсорным экраном.
Есть ли какое-либо универсальное решение?
ОБНОВЛЕНИЕ
Я попробовал свой скрипт на Firefox для Android Mobile, и он отлично работает, но все равно не работает на Chrome для Android Mobile.