【问题标题】:convert small to capital on keypressevent using javascript使用javascript在keypressevent上将小写转换为大写
【发布时间】:2013-02-08 05:55:20
【问题描述】:

当触发onkeypress 事件时,如何在输入small later 时转换大写?我的函数在 Internet Explorer 中有效,但在 Google Chrome 和 FireFox 中无效。

function Capital(evt) [
    key = (evt || window.event) ? evt.keyCode : evt.which;
    if (key >= 97 && key <= 122) {
        if ((evt || window.event)) evt.keyCode = evt.keyCode - 32;
        else evt.which = evt.which - 32;
    }
}

这个函数在onkeypress="Capital(event)"中调用

【问题讨论】:

  • 看看.toUpperCase()
  • 在 Mozilla 浏览器中,keyCode 已弃用且只读。
  • 我正要发表评论说这即使在 IE 中也不起作用,但实际上它确实有效。我很惊讶 =D。

标签: javascript


【解决方案1】:

这根本不需要JS,只需为你的元素设置text-transform: uppercase;

【讨论】:

  • 这不会使实际的底层文本大写,它仅用于显示目的
【解决方案2】:

很简单。将元素传递给您的函数并进行转换。

<script type="text/javascript">
    function convertCase(elem)
    {
        elem.value = elem.value.toUpperCase();
    }
</script>
<input onkeypress="convertCase(this);" type="text" id="txt1" />

【讨论】:

  • 谢谢,但这不是一个正确的方法,因为当这个函数使用我时,我输入像'a'那样的时间显示至少秒a然后转换为A。
  • 无论你想表达什么意思,都不太明白你的意思。要具体。
  • 然而,一旦用户开始在文本中间输入,这会弄乱光标位置,迫使您使用一些获取和设置光标功能。
【解决方案3】:

document.getElementById('my-ok').onkeypress = function() {
  var self = this
  setTimeout(function() {
    self.value = self.value.toUpperCase()
  }, 0)
}
&lt;input id='my-ok' type="text"&gt;

Event and timing

【讨论】:

    【解决方案4】:

    我建议不要在按键上编写脚本,而是在下面的模糊事件上编写它。

     window.onload = function () {
                var textBx = document.getElementById("txt");
    
                textBx.onblur = function () {
                    this.value = this.value.toUpperCase();
                };
            };
    

    【讨论】:

    • 这不取决于你。也许 OP 希望它在用户键入时发生。另一个答案很好地完成了这一点。
    • 谢谢,但这不是一个正确的方法,因为当这个函数使用我时,我输入像'a'那样的时间显示至少秒a然后转换为A。
    猜你喜欢
    • 2011-07-21
    • 1970-01-01
    • 2014-11-07
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    • 2018-08-17
    相关资源
    最近更新 更多