美文网首页
如何将用户输入的小写字母实时转换为大写字母

如何将用户输入的小写字母实时转换为大写字母

作者: zbqsfs | 来源:发表于2017-12-22 16:08 被阅读0次

最近项目中遇到的一个需求,要求用户输入车牌号,并且要求车牌号只能为大写字母,想了想觉得很简单,刷刷刷就写好了:

<input type="text" id="input" />
<script type="text/javascript">
    document.getElementById("input").addEventListener("input",function(e) {
        this.value = this.value.toUpperCase();
    })
</script>

测试了一下也没什么问题,于是就提交了,可是没多久测试就发现了问题:因为是车牌号所以要输入中文,但是微软拼音输入法在输入中文时会先在输入框中显示拼音,然后就被转换成了大写字母,导致输入的中文前面总是会出现大写的拼音字母.
查了一下发现了三个用于IME输入序列的事件:
compositionstart:要开始输入;
compositionupdate:插入新字符;
compositionend:复合系统关闭,返回正常键盘输入状态;
测试了一下compositionstart事件在input事件之前触发,然后问题就好解决了:

<input type="text" id="input" />
<script type="text/javascript">
    document.getElementById("input").addEventListener("compositionstart",function(e) {
        this.compositing = true; //给触发事件的input对象添加compositing属性并设为true,表明正在进行中文输入
    })
    document.getElementById("input").addEventListener("compositionend",function(e) {
        this.compositing = false; //结束中文输入
    })
    document.getElementById("input").addEventListener("input",function(e) {
        !this.compositing && (this.value = this.value.toUpperCase()); //不在中文输入状态时才进行转换
    })
</script>

测试了一下,问题解决.

相关文章

  • 如何将用户输入的小写字母实时转换为大写字母

    最近项目中遇到的一个需求,要求用户输入车牌号,并且要求车牌号只能为大写字母,想了想觉得很简单,刷刷刷就写好了: 测...

  • 大小写字母转换篇

    一、EXCEL (一)将小写字母(rose)转换为大写字母(ROSE) 输入公式:=upper(A1)或=uppe...

  • fasta格式大小写转换

    对于序列是大写字母的fa文件若将序列转换为小写字母命令 小写字母转换大写字母

  • 首字母大小写互转

    //如果是小写字母, 则变换为大写字母 大写字母65~90

  • C语言大写字母与小写字母转换三种方式

    大写字母与小写字母之间的ASCII 码值减去 32由于大写字母与小写字母之间的差值为 32,因此小写字母转换为大写...

  • LintCode 145 大小写转换

    问题描述: 将一个字符由小写字母转换为大写字母 问题示例: 样例 1:输入: 'a' 输出: 'A' 样例 2:...

  • 算法训练 P0103

    从键盘输入一个大写字母,要求改用小写字母输出。输入A输出achar强制转换为int型就是ASCII的值利用这一点

  • cmake 默认规则

    用户函数全部使用小写字母,大写字母用在变量上

  • EXCEL中数字大小写的转换

    一、问题一: (一)如何将12345转换为一二三四五(有单位)? (二)如何将12345转换为壹贰叁肆伍(有单位)...

  • Java(第四天)

    1、计算各位数字之和 2、大写字母转换为小写字母 3、Boolean的使用方法 4、判断年份是否为闰年

网友评论

      本文标题:如何将用户输入的小写字母实时转换为大写字母

      本文链接:https://www.haomeiwen.com/subject/cdxxgxtx.html