我制作了一个Jquery脚本,用于从俄语字符到英语的音译。 但是我无法解决两个问题。这里有代码:
$( window ).load(function() {
$("#username,.validate-username").keyup(
function TRANS () {
var translit = $("#username,.validate-username").val()
.replace("ӓ", "a")
.replace("ӓ̄", "a")
.replace("ӑ", "a")
.replace("а̄", "a")
.replace("ӕ", "ae")
.replace("а́", "a")
.replace("а̊", "a")
.replace("ә", "a")
.replace("ӛ", "a")
.replace("я", "a")
.replace("ѫ", "a")
.replace("а", "a")
.replace("б", "b")
.replace("в", "v")
.replace("ѓ", "g")
.replace("ґ", "g")
.replace("ғ", "g")
.replace("ҕ", "g")
.replace("г", "g")
.replace("һ", "h")
.replace("д", "d")
.replace("ђ", "d")
.replace("ӗ", "e")
.replace("ё", "e")
.replace("є", "e")
.replace("э", "e")
.replace("ѣ", "e")
.replace("е", "e")
.replace("ж", "zh")
.replace("җ", "zh")
.replace("ӝ", "zh")
.replace("ӂ", "zh")
.replace("ӟ", "z")
.replace("ӡ", "z")
.replace("ѕ", "z")
.replace("з", "z")
.replace("ӣ", "j")
.replace("и́", "i")
.replace("ӥ", "i")
.replace("і", "i")
.replace("ї", "ji")
.replace("і̄", "i")
.replace("и", "i")
.replace("ј", "j")
.replace("ј̵", "j")
.replace("й", "j")
.replace("ќ", "k")
.replace("ӄ", "k")
.replace("ҝ", "k")
.replace("ҡ", "k")
.replace("ҟ", "k")
.replace("қ", "k")
.replace("к̨", "k")
.replace("к", "k")
.replace("ԛ", "q")
.replace("љ", "l")
.replace("Л’", "l")
.replace("ԡ", "l")
.replace("л", "l")
.replace("м", "m")
.replace("њ", "n")
.replace("ң", "n")
.replace("ӊ", "n")
.replace("ҥ", "n")
.replace("ԋ", "n")
.replace("ԣ", "n")
.replace("ӈ", "n")
.replace("н̄", "n")
.replace("н", "n")
.replace("ӧ", "o")
.replace("ө", "o")
.replace("ӫ", "o")
.replace("о̄̈", "o")
.replace("ҩ", "o")
.replace("о́", "o")
.replace("о̄", "o")
.replace("о", "o")
.replace("œ", "oe")
.replace("ҧ", "p")
.replace("ԥ", "p")
.replace("п", "p")
.replace("р", "r")
.replace("с̀", "s")
.replace("ҫ", "s")
.replace("ш", "sh")
.replace("щ", "sch")
.replace("с", "s")
.replace("ԏ", "t")
.replace("т̌", "t")
.replace("ҭ", "t")
.replace("т", "t")
.replace("ӱ", "u")
.replace("ӯ", "u")
.replace("ў", "u")
.replace("ӳ", "u")
.replace("у́", "u")
.replace("ӱ̄", "u")
.replace("ү", "u")
.replace("ұ", "u")
.replace("ӱ̄", "u")
.replace("ю̄", "u")
.replace("ю", "u")
.replace("у", "u")
.replace("ԝ", "w")
.replace("ѳ", "f")
.replace("ф", "f")
.replace("ҳ", "h")
.replace("х", "h")
.replace("ћ", "c")
.replace("ҵ", "c")
.replace("џ", "d")
.replace("ч", "c")
.replace("ҷ", "c")
.replace("ӌ", "c")
.replace("ӵ", "c")
.replace("ҹ", "c")
.replace("ч̀", "c")
.replace("ҽ", "c")
.replace("ҿ", "c")
.replace("ц", "c")
.replace("ъ", "y")
.replace("ӹ", "y")
.replace("ы̄", "y")
.replace("ѵ", "y")
.replace("ы", "y")
.replace("ь", "y")
.replace("", "")
.replace("Ӓ", "a")
.replace("Ӓ̄", "a")
.replace("Ӑ", "a")
.replace("А̄", "a")
.replace("Ӕ", "ae")
.replace("А́", "a")
.replace("А̊", "a")
.replace("Ә", "a")
.replace("Ӛ", "a")
.replace("Я", "a")
.replace("Ѫ", "a")
.replace("А", "a")
.replace("Б", "b")
.replace("В", "v")
.replace("Ѓ", "g")
.replace("Ґ", "g")
.replace("Ғ", "g")
.replace("Ҕ", "g")
.replace("Г", "g")
.replace("Һ", "h")
.replace("Д", "d")
.replace("Ђ", "d")
.replace("Ӗ", "e")
.replace("Ё", "e")
.replace("Є", "e")
.replace("Э", "e")
.replace("Ѣ", "e")
.replace("Е", "e")
.replace("Ж", "zh")
.replace("Җ", "zh")
.replace("Ӝ", "zh")
.replace("Ӂ", "zh")
.replace("Ӟ", "z")
.replace("Ӡ", "z")
.replace("Ѕ", "z")
.replace("З", "z")
.replace("Ӣ", "j")
.replace("И́", "i")
.replace("Ӥ", "i")
.replace("І", "i")
.replace("Ї", "ji")
.replace("І̄", "i")
.replace("И", "i")
.replace("Ј", "j")
.replace("Ј̵", "j")
.replace("Й", "j")
.replace("Ќ", "k")
.replace("Ӄ", "k")
.replace("Ҝ", "k")
.replace("Ҡ", "k")
.replace("Ҟ", "k")
.replace("Қ", "k")
.replace("К̨", "k")
.replace("К", "k")
.replace("ԛ", "q")
.replace("Љ", "l")
.replace("Л’", "l")
.replace("ԡ", "l")
.replace("Л", "l")
.replace("М", "m")
.replace("Њ", "n")
.replace("Ң", "n")
.replace("Ӊ", "n")
.replace("Ҥ", "n")
.replace("Ԋ", "n")
.replace("ԣ", "n")
.replace("Ӈ", "n")
.replace("Н̄", "n")
.replace("Н", "n")
.replace("Ӧ", "o")
.replace("Ө", "o")
.replace("Ӫ", "o")
.replace("О̄̈", "o")
.replace("Ҩ", "o")
.replace("О́", "o")
.replace("О̄", "o")
.replace("О", "o")
.replace("Œ", "oe")
.replace("Ҧ", "p")
.replace("ԥ", "p")
.replace("П", "p")
.replace("Р", "r")
.replace("С̀", "s")
.replace("Ҫ", "s")
.replace("Ш", "sh")
.replace("Щ", "sch")
.replace("С", "s")
.replace("Ԏ", "t")
.replace("Т̌", "t")
.replace("Ҭ", "t")
.replace("Т", "t")
.replace("Ӱ", "u")
.replace("Ӯ", "u")
.replace("Ў", "u")
.replace("Ӳ", "u")
.replace("У́", "u")
.replace("Ӱ̄", "u")
.replace("Ү", "u")
.replace("Ұ", "u")
.replace("Ӱ̄", "u")
.replace("Ю̄", "u")
.replace("Ю", "u")
.replace("У", "u")
.replace("ԝ", "w")
.replace("Ѳ", "f")
.replace("Ф", "f")
.replace("Ҳ", "h")
.replace("Х", "h")
.replace("Ћ", "c")
.replace("Ҵ", "c")
.replace("Џ", "d")
.replace("Ч", "c")
.replace("Ҷ", "c")
.replace("Ӌ", "c")
.replace("Ӵ", "c")
.replace("Ҹ", "c")
.replace("Ч̀", "c")
.replace("Ҽ", "c")
.replace("Ҿ", "c")
.replace("Ц", "c")
.replace("Ъ", "y")
.replace("Ӹ", "y")
.replace("Ы̄", "y")
.replace("Ѵ", "y")
.replace("Ы", "y")
.replace("Ь", "y")
.replace("№", "")
.replace("\'", "")
.replace("\"", "")
.replace(";", "")
.replace(":", "")
.replace(",", "")
.replace(".", "")
.replace(">", "")
.replace("<", "")
.replace("?", "")
.replace("!", "")
.replace("@", "")
.replace("#", "")
.replace("$", "")
.replace("%", "")
.replace("&", "")
.replace("^", "")
.replace("(", "")
.replace(")", "")
.replace("*", "")
.replace("+", "")
.replace("~", "")
.replace("|", "")
.replace("{", "")
.replace("}", "")
.replace("|", "")
.replace("[", "")
.replace("]", "")
.replace("/", "")
.replace("`", "")
.replace("=", "")
.replace("+", "")
.replace("_", "")
.replace("\s", "")
.replace("\s\s", "")
.replace("/[^A-Za-z0-9\-]", "")
.trim();
$(this).val(translit);
});
});
问题1 - 当用户按下并按住某个键时 - 脚本不起作用 问题2 - 在我看来,代码很长。也许有一个更短的方式? 有人可以帮忙吗?
答案 0 :(得分:1)
不确定按住键的问题是什么,不知道预期的行为是什么,但可以缩短这样的时间......
$("#username,.validate-username").keyup(function(){
// get reference to value
var val = $("#username,.validate-username").val()
// define map of translations to do
var map = [
["ӓ", "a"], ["ӓ̄", "a"], ["ӑ", "a"], ["а̄", "a"], ["ӕ", "ae"], ["а́", "a"], ["а̊", "a"], ["ә", "a"], ["ӛ", "a"], ["я", "a"], ["ѫ", "a"], ["а", "a"], ["б", "b"], ["в", "v"], ["ѓ", "g"], ["ґ", "g"], ["ғ", "g"], ["ҕ", "g"], ["г", "g"], ["һ", "h"], ["д", "d"], ["ђ", "d"], ["ӗ", "e"], ["ё", "e"], ["є", "e"], ["э", "e"], ["ѣ", "e"], ["е", "e"], ["ж", "zh"], ["җ", "zh"], ["ӝ", "zh"], ["ӂ", "zh"], ["ӟ", "z"], ["ӡ", "z"], ["ѕ", "z"], ["з", "z"], ["ӣ", "j"], ["и́", "i"], ["ӥ", "i"], ["і", "i"], ["ї", "ji"], ["і̄", "i"], ["и", "i"], ["ј", "j"], ["ј̵", "j"], ["й", "j"], ["ќ", "k"], ["ӄ", "k"], ["ҝ", "k"], ["ҡ", "k"], ["ҟ", "k"], ["қ", "k"], ["к̨", "k"], ["к", "k"], ["ԛ", "q"], ["љ", "l"], ["Л’", "l"], ["ԡ", "l"], ["л", "l"], ["м", "m"], ["њ", "n"], ["ң", "n"], ["ӊ", "n"], ["ҥ", "n"], ["ԋ", "n"], ["ԣ", "n"], ["ӈ", "n"], ["н̄", "n"], ["н", "n"], ["ӧ", "o"], ["ө", "o"], ["ӫ", "o"], ["о̄̈", "o"], ["ҩ", "o"], ["о́", "o"], ["о̄", "o"], ["о", "o"], ["œ", "oe"], ["ҧ", "p"], ["ԥ", "p"], ["п", "p"], ["р", "r"], ["с̀", "s"], ["ҫ", "s"], ["ш", "sh"], ["щ", "sch"], ["с", "s"], ["ԏ", "t"], ["т̌", "t"], ["ҭ", "t"], ["т", "t"], ["ӱ", "u"], ["ӯ", "u"], ["ў", "u"], ["ӳ", "u"], ["у́", "u"], ["ӱ̄", "u"], ["ү", "u"], ["ұ", "u"], ["ӱ̄", "u"], ["ю̄", "u"], ["ю", "u"], ["у", "u"], ["ԝ", "w"], ["ѳ", "f"], ["ф", "f"], ["ҳ", "h"], ["х", "h"], ["ћ", "c"], ["ҵ", "c"], ["џ", "d"], ["ч", "c"], ["ҷ", "c"], ["ӌ", "c"], ["ӵ", "c"], ["ҹ", "c"], ["ч̀", "c"], ["ҽ", "c"], ["ҿ", "c"], ["ц", "c"], ["ъ", "y"], ["ӹ", "y"], ["ы̄", "y"], ["ѵ", "y"], ["ы", "y"], ["ь", "y"], ["", ""], ["Ӓ", "a"], ["Ӓ̄", "a"], ["Ӑ", "a"], ["А̄", "a"], ["Ӕ", "ae"], ["А́", "a"], ["А̊", "a"], ["Ә", "a"], ["Ӛ", "a"], ["Я", "a"], ["Ѫ", "a"], ["А", "a"], ["Б", "b"], ["В", "v"], ["Ѓ", "g"], ["Ґ", "g"], ["Ғ", "g"], ["Ҕ", "g"], ["Г", "g"], ["Һ", "h"], ["Д", "d"], ["Ђ", "d"], ["Ӗ", "e"], ["Ё", "e"], ["Є", "e"], ["Э", "e"], ["Ѣ", "e"], ["Е", "e"], ["Ж", "zh"], ["Җ", "zh"], ["Ӝ", "zh"], ["Ӂ", "zh"], ["Ӟ", "z"], ["Ӡ", "z"], ["Ѕ", "z"], ["З", "z"], ["Ӣ", "j"], ["И́", "i"], ["Ӥ", "i"], ["І", "i"], ["Ї", "ji"], ["І̄", "i"], ["И", "i"], ["Ј", "j"], ["Ј̵", "j"], ["Й", "j"], ["Ќ", "k"], ["Ӄ", "k"], ["Ҝ", "k"], ["Ҡ", "k"], ["Ҟ", "k"], ["Қ", "k"], ["К̨", "k"], ["К", "k"], ["ԛ", "q"], ["Љ", "l"], ["Л’", "l"], ["ԡ", "l"], ["Л", "l"], ["М", "m"], ["Њ", "n"], ["Ң", "n"], ["Ӊ", "n"], ["Ҥ", "n"], ["Ԋ", "n"], ["ԣ", "n"], ["Ӈ", "n"], ["Н̄", "n"], ["Н", "n"], ["Ӧ", "o"], ["Ө", "o"], ["Ӫ", "o"], ["О̄̈", "o"], ["Ҩ", "o"], ["О́", "o"], ["О̄", "o"], ["О", "o"], ["Œ", "oe"], ["Ҧ", "p"], ["ԥ", "p"], ["П", "p"], ["Р", "r"], ["С̀", "s"], ["Ҫ", "s"], ["Ш", "sh"], ["Щ", "sch"], ["С", "s"], ["Ԏ", "t"], ["Т̌", "t"], ["Ҭ", "t"], ["Т", "t"], ["Ӱ", "u"], ["Ӯ", "u"], ["Ў", "u"], ["Ӳ", "u"], ["У́", "u"], ["Ӱ̄", "u"], ["Ү", "u"], ["Ұ", "u"], ["Ӱ̄", "u"], ["Ю̄", "u"], ["Ю", "u"], ["У", "u"], ["ԝ", "w"], ["Ѳ", "f"], ["Ф", "f"], ["Ҳ", "h"], ["Х", "h"], ["Ћ", "c"], ["Ҵ", "c"], ["Џ", "d"], ["Ч", "c"], ["Ҷ", "c"], ["Ӌ", "c"], ["Ӵ", "c"], ["Ҹ", "c"], ["Ч̀", "c"], ["Ҽ", "c"], ["Ҿ", "c"], ["Ц", "c"], ["Ъ", "y"], ["Ӹ", "y"], ["Ы̄", "y"], ["Ѵ", "y"], ["Ы", "y"], ["Ь", "y"], ["№", ""], ["\'", ""], ["\"", ""], [";", ""], [":", ""], [",", ""], [".", ""], [">", ""], ["<", ""], ["?", ""], ["!", ""], ["@", ""], ["#", ""], ["$", ""], ["%", ""], ["&", ""], ["^", ""], ["(", ""], [")", ""], ["*", ""], ["+", ""], ["~", ""], ["|", ""], ["{", ""], ["}", ""], ["|", ""], ["[", ""], ["]", ""], ["/", ""], ["`", ""], ["=", ""], ["+", ""], ["_", ""], ["\s", ""], ["\s\s", ""], ["/[^A-Za-z0-9\-]", ""]
];
// loop through the map, doing all necessary replacements
for(var i=0; i<map.length; i++){
val = val.replace(map[i][0], map[i][1]);
};
$(this).val(val.trim());
});
如果可能的话,可能最好将映射数据拉入源中的单独文件中。
答案 1 :(得分:0)
1)使用keypress
代替keyup
。
2)将这些字符存储到数组中并使用for
循环:
var r = ['ӓ',...];
var r = ['a',...];
...
var translit = $("#username,.validate-username").val();
for ( var i = 0 ; i < r.length ; i++ ) {
translit.replace(r[i], e[i]);
}
...
2')您可以使用地图:
var map = {"ӓ":"a",...};
答案 2 :(得分:0)
.bind('keyup keypress keydown', function ()