热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

input文本框强迫输入指定笔墨的要领以及IE11的兼容

背景:近来开辟的韩国项目,在用户姓名输入框一栏中,请求只能输入韩文,一般用到onkeyup和onafterpaste两个事宜来触发要领,并在要领中举行校验,但是在IE浏览器中,涌现

背景:近来开辟的韩国项目,在用户姓名输入框一栏中,请求只能输入韩文,一般用到onkeyup和onafterpaste两个事宜来触发要领,并在要领中举行校验,但是在IE浏览器中,涌现了一种状况,就是韩文单词拼写未完成的时刻,会直接举行校验并显现,如下图实例所展现,并不是须要想要的效果,所以须要举行IE兼容;
《input文本框强迫输入指定笔墨的要领以及IE11的兼容》

纪录一下全部流程:

标签绑定事宜

标签绑定了onkeyup键盘抬起事宜以及onafterpaste粘贴文本进输入框两个事宜,当有这两个操纵时,就会触发响应的校验要领;

校验要领

keyup (ev) {
if (!this.imeStatus) {
ev.target.value = ev.target.value.replace(/[^ㄱ-ㅎㅏ-ㅣ가-힣A-Za-z0-9]/g, '')
}
},

当事宜触发时,起首会有个变量imeStatus校验是不是是IE浏览器,然后再依据正则校验举行输入框值的替代,注重:替代的应该是当前正在输入的值,并不是全部输入框包含已输入的一切值;

if (getBrowser() === 'IE') {
window.addEventListener('compositionstart', () => {
this.imeStatus = true
}, false)
window.addEventListener('compositionend', () => {
this.imeStatus = false
}, false)
}

IE浏览器的校验:如果是IE浏览器,则对输入法事宜举行监听,在输入法录入开始时,变量imeStatus为true,当前输入的值不举行校验,当输入法输入完毕事宜触发时,申明拼写完成,变量imeStatus为false,举行校验当前拼写输入完成的单词;

function getBrowser () {
const userAgent = navigator.userAgent
if (userAgent.indexOf('OPR') > -1) {
return 'Opera'
}
if (userAgent.indexOf('Firefox') > -1) {
return 'FF'
}
if (userAgent.indexOf('Trident') > -1) {
return 'IE'
}
if (userAgent.indexOf('Edge') > -1) {
return 'Edge'
}
if (userAgent.indexOf('Chrome') > -1) {
return 'Chrome'
}
if (userAgent.indexOf('Safari') > -1) {
return 'Safari'
}
}

对浏览器的推断:navigator.userAgent猎取当前浏览器信息;

以上就是我在项目开辟过程当中碰到的须要兼容IE的处所;文中提到的是韩文校验,也能够替代成其他言语,依据本身项目中的详细需求举行修正即可;


推荐阅读
author-avatar
用户0h2eqqbg44
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有