我正在编写一个简单的代码,它将键入的字母转换为大写字母,然后在keyup()事件中将这个超感知字母重新填充到输入元素中。
但我遇到了一个令人困惑的问题:在我的三星手机(Galaxy Note 5)上打字时,我会收到类似以下图片的复文:
以上,我使用默认的三星键盘与越南语和谷歌铬浏览器。但是当我试图把语言转换成英语时,我看不出问题所在。
我有一些测试,这是结果:
试验1:
三星键盘+越南语
Chrome /或三星浏览器
->这个问题发生了
试验2:
三星键盘+英语
Chrome /或三星浏览器
->这个问题不会发生
试验3:
三星键盘+越南语
Firefox浏览器
->这个问题不会发生
试验4:
Google键盘+越南语
Chrome /或三星浏览器
->这个问题不会发生
以下是代码:
<input type="text" id="inputText">
<script>
document.getElementById('inputText').addEventListener('keyup', function() {
var typedLetters = this.value;
var upperCasedLetters = typedLetters.toUpperCase();
this.value = upperCasedLetters;
});
</script>
我在GitHub上读过类似的文章:https://github.com/facebook/react-native/issues/11068,但到目前为止我还没有找到明确的解决方案。
谁能告诉我发生了什么事吗?如何以编程方式解决这一问题?
提前谢谢你!
发布于 2019-10-13 17:57:41
好的,我已经了解了如何通过应用https://stackoverflow.com/a/40111105/4006731上描述的“密码字段”技巧来处理这个问题。
发布于 2019-08-31 07:31:33
为什么不使用text-transform: uppercase;
??纯CSS解决方案
input {
text-transform: uppercase;
}
<input type="text" id="inputText">
发布于 2020-01-29 22:17:52
我发现自动大写解决了我的问题:
<input id="input" type="search" autocomplete="off" autocorrect="off" autocapitalize="characters" spellcheck="false" placeholder="Enter Text"/>
这实际上是打开键盘的盖帽锁。占位符文本仍然是书面的(大写和更低),大写并不像CSS文本转换方法那样是“眼花缭乱”,比密码字段黑客要简单得多。
https://stackoverflow.com/questions/57736045
复制相似问题