I made a script which converts keypress character typed by user to another desired character and put in input field. It works very well on desktop computer, but it is totally useless for touchscreen devices.
$("#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">
I tried to put .on("keydown input")
, .on("keydown touchend")
, .on("input touchend")
and still the script does not work.
For now I am trying to make this script to work on Android browser, but I would like to work on every touchscreen device.
Is there any universal solution?
UPDATE
I tried my script on Firefox for Android Mobile and it works perfectly, but still it does not work on Chrome for Android Mobile.