use*_*129 -4 javascript jquery
如何更改 keyup 上的字符输入。如果我输入“\xc3\x98”或其他类似于“O”的字符,我想自动将其替换为字符“O”。对于其他非英语字符也是如此。
\n\n有人知道如何实现这一目标吗?
\n这可能是一个起点,基于这篇关于主题的文章http://semplicewebsites.com/removing-accents-javascript
\n\n从网站复制的要点:
\n\n首先是要替换的字符的映射(文章来源包括广泛的映射数组)
\n\nvar latin_map = {\n \'\xc3\x98\': \'O\', // \'empty set\' (?)\n \'\xc3\x81\': \'A\', // LATIN CAPITAL LETTER A WITH ACUTE\n \'\xc4\x82\': \'A\', // LATIN CAPITAL LETTER A WITH BREVE\n ...\n \'\xe1\xb5\xa5\': \'v\', // LATIN SUBSCRIPT SMALL LETTER V\n \'\xe2\x82\x93\': \'x\', // LATIN SUBSCRIPT SMALL LETTER X\n};\nRun Code Online (Sandbox Code Playgroud)\n\n然后,本文使用原型操作将latinise所有字符串添加为函数
String.prototype.latinise = function() {\n return this.replace(/[^A-Za-z0-9]/g, function(x) { return latin_map[x] || x; })\n};\n\n// American English spelling :)\nString.prototype.latinize = String.prototype.latinise;\n\nString.prototype.isLatin = function() {\n return this == this.latinise();\n};\nRun Code Online (Sandbox Code Playgroud)\n\n与原型操作一起使用
\n\n> console.log("Mere \xc3\x98l".latinise())\n"Mere Ol" \nRun Code Online (Sandbox Code Playgroud)\n\n如何适用于您的情况:
\n\n就我个人而言,我会将函数与字符串原型分开(但这是个人选择)。
\n\nlatin_map = {...};\nfunction latinize(s) {\n return s.replace(/[^A-Za-z0-9]/g, function(x) { return latin_map[x] || x;});\n}\nRun Code Online (Sandbox Code Playgroud)\n\n然后你可以像这样清理 keyup 上的输入(假设你使用 jQuery):
\n\n$(\'#myinput\').on(\'keyup\', function() {\n $this = $(this);\n $this.val(latinize($this.val()));\n});\nRun Code Online (Sandbox Code Playgroud)\n