Javascript 输入是否已替换键入问题上的字符?

Javascript 输入是否已替换键入问题上的字符?,javascript,Javascript,以下fiddle链接中存在一个问题,因为它显示了首先键入的字符,然后转换为其他字符 那么,有没有办法使键入的字符不首先显示,而直接显示替换的字符 因为现在很难看: JS小提琴链接: $(“#普什图”).keyup(函数(事件){ var car=$(this.val(); 汽车=汽车。更换(“a”、“ا”); 汽车=汽车。更换(“A”、“آ”); 汽车=汽车。更换(“b”、“ب”); 汽车=汽车。更换(“B”和“); 汽车=汽车。更换(“c”、“چ”); 汽车=汽车。更换(“C”、“ث”);

以下fiddle链接中存在一个问题,因为它显示了首先键入的字符,然后转换为其他字符

那么,有没有办法使键入的字符不首先显示,而直接显示替换的字符

因为现在很难看:

JS小提琴链接:

$(“#普什图”).keyup(函数(事件){
var car=$(this.val();
汽车=汽车。更换(“a”、“ا”);
汽车=汽车。更换(“A”、“آ”);
汽车=汽车。更换(“b”、“ب”);
汽车=汽车。更换(“B”和“);
汽车=汽车。更换(“c”、“چ”);
汽车=汽车。更换(“C”、“ث”);
汽车=汽车。更换(“d”、“د”);
汽车=汽车。更换(“D”、“ډ”);
汽车=汽车。更换(“e”、“ع”);
汽车=汽车。更换(“E”、“ږ”);
汽车=汽车。更换(“f”、“ف”);
汽车=汽车。更换(“F”和“);
汽车=汽车。更换(“g”、“ګ”);
汽车=汽车。更换(“G”、“غ”);
汽车=汽车。更换(“h”、“ž”);
汽车=汽车。更换(“H”、“ځ”);
汽车=汽车。更换(“i”、“ي”);
汽车=汽车。更换(“I”、“ې”);
汽车=汽车。更换(“j”、“ج”);
汽车=汽车。更换(“J”、“ض”);
汽车=汽车。更换(“k”、“ک”);
汽车=汽车。更换(“K”、“خ”);
汽车=汽车。更换(“l”、“ل”);
汽车=汽车。更换(“L”和“);
汽车=汽车。更换(“m”、“م”);
汽车=汽车。更换(“M”和“);
汽车=汽车。更换(“n”、“ن”);
汽车=汽车。更换(“N”、“ڼ”);
汽车=汽车。更换(“o”、“ه”);
汽车=汽车。更换(“O”、“ۀ”);
汽车=汽车。更换(“p”、“پ”);
汽车=汽车。更换(“P”、“څ”);
汽车=汽车。更换(“q”、“ق”);
汽车=汽车。更换(“Q”、“ښ”);
汽车=汽车。更换(“r”、“Ⅷ”);
汽车=汽车。更换(“R”、“ړ”);
汽车=汽车。更换(“s”、“س”);
汽车=汽车。更换(“S”、“S”);
汽车=汽车。更换(“t”、“ت”);
汽车=汽车。更换(“T”、“ټ”);
汽车=汽车。更换(“u”、“ئ”);
汽车=汽车。更换(“U”、“ۍ”);
汽车=汽车。更换(“v”、“ط”);
汽车=汽车。更换(“V”、“ظ”);
汽车=汽车。更换(“w”、“و”);
汽车=汽车。更换(“W”、“ؤ”);
汽车=汽车。更换(“x”,“ش”);
汽车=汽车。更换(“X”、“ژ”);
汽车=汽车。更换(“y”、“ے”);
汽车=汽车。更换(“Y”、“ی”);
汽车=汽车。更换(“z”、“ز”);
汽车=汽车。更换(“Z”、“ذ”);
汽车=汽车。更换(“?”,“؟”);
汽车=汽车。更换(“;”,“؛”);
汽车=汽车。更换(“0”,“۰”);
汽车=汽车。更换(“1”,“۱”);
汽车=汽车。更换(“2”,“۲”);
汽车=汽车。更换(“3”,“۳”);
汽车=汽车。更换(“4”,“۴”);
汽车=汽车。更换(“5”,“۵”);
汽车=汽车。更换(“6”,“۶”);
汽车=汽车。更换(“7”,“۷”);
汽车=汽车。更换(“8”,“۸”);
汽车=汽车。更换(“9”,“۹”);
$(本).val(汽车);
});
普什图语
{
方向:rtl;
文本对齐:右对齐;
字体大小:20px;
填充物:5px;
}

在这种情况下,使用
keyup
事件并不是很好,因为
keyup
就像名字所说的那样,是在插入字母并在文本框中可见后,在keyup上触发的

使用
输入
事件。这将捕获其他事件(如粘贴、剪切、使用鼠标删除等):

另一个问题是keyup无法捕获鼠标文本粘贴。因此,如果复制
a
并右键单击并将文本粘贴到输入中,则无法正确替换该文本。只要输入中的值发生更改,
输入
事件就会触发

此外,您还可以更改代码,使其看起来更好:

var替换=[
[“a”,“ا”],[“a”,“آ”],[“b”,“ب”],[“b”,“آ”],[“c”,“چ”],
[“C”、“ث”]、[“d”、“د”]、[“d”、“ډ”]、[“e”、“ع”]、[“e”、“ږ”],
[f]、[f]、[g]、[g]、[g]、[g]、[h]、[C]、[h]、[C]、[g]、[C]、[C]、[C]、[C]、[C]、[C]、[C]、[C]、[C]、[C]、[C]、[C]、[C]、[C]、[C]、,
[“H”、“ځ”]、[“i”、“ي”]、[“i”、“ې”]、[“j”、“ج”]、[“j”、“ض”],
[“k”,“ک”],[“k”,“خ”],[“l”,“ل”],[“l”,“م”],[“m”,“م”],
[M]、[n”、“ن”]、[n”、“ڼ”]、[o”、“ه”]、[o”、“ۀ”],
[“p”,“پ”],[“p”,“څ”],[“q”,“ق”],[“q”,“ښ”],[“r”,“څ”],
[“R”、“ړ”]、[“s”、“س”]、[“s”、“ā”]、[“t”、“ت”]、[“t”、“ټ”],
[“u”、“ئ”]、[“u”、“ۍ”]、[“v”、“ط”]、[“v”、“ظ”]、[“w”、“و”],
[“W”、“ؤ”]、[“x”、“ش”]、[“x”、“ژ”]、[“y”、“ے”]、[“y”、“ی”],
[“z”、“ز”]、[“z”、“ذ”]、[“?”、“؟”]、[“;”、“؛”]、[“0”、“۰”],
["1", "۱"], ["2", "۲"], ["3", "۳"], ["4", "۴"], ["5", "۵"],
["6", "۶"], ["7", "۷"], ["8", "۸"], ["9", "۹"]
].map(功能(c){
//逃避特殊角色
var-escaped=c[0]。替换(/[\-\[\]\/\{\\\\\\\(\)\*\+\?\。\\\^\$\\\\\;]/g,“\$&”);
//然后转换为正则表达式
c[0]=新的RegExp(转义为“g”);
返回c;
});
$(“#普什图语”)。关于(“输入”,函数(事件){
var car=$(this.val();
//现在,简单地用正则表达式替换
替换。forEach(功能(c){
汽车=汽车。更换(c[0],c[1]);
});
$(本).val(汽车);
});
普什图语{
方向:rtl;
文本对齐:右对齐;
字体大小:20px;
填充物:5px;
}

在这种情况下,
keyup
事件的使用不是很好,因为
keyup
就像名字所说的那样,在插入字母并在文本框中可见后,在keyup上触发

使用
输入
事件。这将捕获其他事件(如粘贴、剪切、使用鼠标删除等):

另一个问题是keyup无法捕获鼠标文本粘贴。因此,如果复制
a
并右键单击并将文本粘贴到输入中,则无法正确替换该文本。只要输入中的值发生更改,
输入
事件就会触发

此外,您还可以更改代码,使其看起来更好:

var替换=[
[“a”,“ا”],[“a”,“آ”],[“b”,“ب”],[“b”,“آ”],[“c”,“چ”],
[“C”、“ث”]、[“d”、“د”]、[“d”、“ډ”]、[“e”、“ع”]、[“e”、“ږ”],
[f]、[f]、[g]、[g]、[g]、[g]、[h]、[C]、[h]、[C]、[g]、[C]、[C]、[C]、[C]、[C]、[C]、[C]、[C]、[C]、[C]、[C]、[C]、[C]、[C]、[C]、,
[“H”、“ځ”]、[“i”、“ي”]、[“i”、“ې”]、[“j”、“ج”]、[“j”、“ض”],
[“k”,“ک”],[“k”,“خ”],[“l”
$("#pashto").keydown(function(event) { 
    var car = $(this).val(); 
    car = car.replace("a", "ا");
    car = car.replace("A", "آ");
    car = car.replace("b", "ب");
    car = car.replace("B", "");
    car = car.replace("c", "چ");
    car = car.replace("C", "ث");
    car = car.replace("d", "د");
    car = car.replace("D", "ډ");
    car = car.replace("e", "ع");
    car = car.replace("E", "ږ");
    car = car.replace("f", "ف");
    car = car.replace("F", "");
    car = car.replace("g", "ګ");
    car = car.replace("G", "غ");
    car = car.replace("h", "ح");
    car = car.replace("H", "ځ");
    car = car.replace("i", "ي");
    car = car.replace("I", "ې");
    car = car.replace("j", "ج");
    car = car.replace("J", "ض");
    car = car.replace("k", "ک");
    car = car.replace("K", "خ");
    car = car.replace("l", "ل");
    car = car.replace("L", "");
    car = car.replace("m", "م");
    car = car.replace("M", "");
    car = car.replace("n", "ن");
    car = car.replace("N", "ڼ");
    car = car.replace("o", "ه");
    car = car.replace("O", "ۀ");
    car = car.replace("p", "پ");
    car = car.replace("P", "څ");
    car = car.replace("q", "ق");
    car = car.replace("Q", "ښ");
    car = car.replace("r", "ر");
    car = car.replace("R", "ړ");
    car = car.replace("s", "س");
    car = car.replace("S", "ص");
    car = car.replace("t", "ت");
    car = car.replace("T", "ټ");
    car = car.replace("u", "ئ");
    car = car.replace("U", "ۍ");
    car = car.replace("v", "ط");
    car = car.replace("V", "ظ");
    car = car.replace("w", "و");
    car = car.replace("W", "ؤ");
    car = car.replace("x", "ش");
    car = car.replace("X", "ژ");
    car = car.replace("y", "ے");
    car = car.replace("Y", "ی");
    car = car.replace("z", "ز");
    car = car.replace("Z", "ذ");
    car = car.replace("?", "؟");
    car = car.replace(";", "؛");
    car = car.replace("0", "۰");
    car = car.replace("1", "۱");
    car = car.replace("2", "۲");
    car = car.replace("3", "۳");
    car = car.replace("4", "۴");
    car = car.replace("5", "۵");
    car = car.replace("6", "۶");
    car = car.replace("7", "۷");
    car = car.replace("8", "۸");
    car = car.replace("9", "۹");
    $(this).val(car);
   });
$("#pashto").on("input", function(event) { 
  ...
});