鸳鸯亭资源网 Design By www.gvabc.com
vue框架移动端做ip输入框组件,input在浏览器和微信端兼容问题。
要求:只能输入数字,输入数字以外的字符(包括点、冒号等数字符号)时自动跳到下一段ip输入框.
type=number类型,不会禁止点的输入。手动过滤拿不到包括点字符的字符串.而且输入多个点之后,拿到的值为空.
解决办法:type=tel,只能输入数字,且可以获取到点字符的输入
问题:微信下keyup事件无效,回调事件中event.keyCode返回全是229.
解决办法:监听input事件,event事件对象中keycode为空,但是event.data返回输入字符,可以实现过滤.
<template> <div class="ipAdress"> <ul class="ipInput" :class="{isDisabled:isDisabled}" > <li :key='index' v-for="(item,index) in ipAdress"> <input :tabindex="'ipInput'+(index+1)" :class="'ipAdress'+(index+1)" @blur="blurFocus(index)" autocomplete="off" :readonly="isDisabled" maxlength="3" type="tel" pattern="[0-9]{1,3}" @input="checkIpVal(item,index,$event)" :disabled="isDisabled" @keyup="turnIpPOS(item,index,$event)" @keydown="delteIP(item,index,$event)" v-model="item.value" ref="ipInput" /> <span v-if="index<3">.</span> </li> </ul> </div> </template> <script> export default { data() { return { ipAdress: [{ value: '' }, { value: '' }, { value: '' }, { value: '' }], isWX:navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == "micromessenger" }; }, props: { ipStr: { trype: String, default: '' }, ipType: { type: String }, isDisabled: { type: Boolean, default: false }, width: { type: String, default:'100%' } }, watch: { ipStr:{ immediate:true, handler:function(vall) { let val = vall; let nArr = []; if(val && val.includes('.') && val.length > 0) { let valArr = val.split('.'); let m = valArr.length; for(let i = 0; i < 4; i++) { if(valArr[i] == 'null' || valArr[i] == 'undefined'){ valArr[i] = ''; } if(i < m) { nArr.push({ value: valArr[i] }); } else { nArr.push({ value: '' }); } } } else { nArr = [{ value: '' }, { value: '' }, { value: '' }, { value: '' }]; } this.ipAdress = nArr; } } }, methods: { //methods blurFocus(index) { if(index == 3) { this.$emit('blur'); } }, checkIpVal(item,index,event) { let self = this; //wx if(this.isWX){ let e = event || window.event; let keyCode = e.data; // //.向右跳转 if(keyCode === ".") { e.preventDefault(); e.returnValue = false; item.value = item.value.replace(/[^\d]/g, "").replace(/[\.]/g, ""); if(index < 3 ) { self.$refs.ipInput[index + 1].focus(); } return false; } } let isNo = /^[0-9]{1,3}$/g; if(/[^\d]/g.test(item.value)){ let cache = JSON.parse(JSON.stringify(self.ipAdress)); cache[index].value = item.value.replace(/[^\d]/g, "").replace(/[\.]/g, ""); self.ipAdress = cache; return false; } if(item.value.replace(/[^\d]/g, "").length >= 3) { let val = parseInt(item.value.replace(/[^\d]/g, ""), 10); if(isNaN(val)) { val = '' } else if(val > 255) { val = 255; } else { val = val < 0 "", this.ipType); }else{ this.$emit('getIP', ns.slice(1), this.ipType); } }, turnIpPOS(item, index, event) { let self = this; let e = event || window.event; if(e.keyCode == 37) { if(index != 0) { self.$refs.ipInput[index - 1].focus(); } } //右箭头、回车键、空格键、冒号均向右跳转,右一不做任何措施 if(e.keyCode == 39 || e.keyCode == 13 || e.keyCode == 32 || e.keyCode == 110 || e.keyCode == 46 || e.keyCode == 190 ) { e.preventDefault(); e.returnValue = false; if(index < 3 ) { self.$refs.ipInput[index + 1].focus(); } return false; } }, delteIP(item, index, event) { let self = this; let e = event || window.event; let val = parseInt(item.value.replace(/[^\d]/g, ""), 10); val = isNaN(val) "scss" scoped> $--border-color:#ccc; $--outline-color:transparent; $--font-color:$--input-color; $base-font-size:12px; .ipInput { box-sizing: border-box; line-height: inherit; border: 1px solid $--border-color; overflow: hidden; border-radius: 5px; padding: 0; margin: 0; display: inline-block; vertical-align: middle; outline: $--outline-color; font-size:0; text-indent: 0; background: #fff; &.isDisabled { background: $--outline-color; li{ cursor:not-allowed; input{ cursor:not-allowed; } } } li { display: inline-block; width:25%; box-sizing: border-box; font-size:0; input { appearance: none; padding:10px 5px; width: calc(100% - 3px); text-align: center; outline: none; border: none; color: $--font-color; box-sizing: border-box; font-size: $base-font-size; &:disabled { background: $--outline-color; } } span { display: inline-block; font-size:$base-font-size; width: 3px; color: $--font-color; } } } </style>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
鸳鸯亭资源网 Design By www.gvabc.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
鸳鸯亭资源网 Design By www.gvabc.com
暂无评论...
更新日志
2024年11月20日
2024年11月20日
- Rhymist / LusciousBB《年轮》[FLAC/分轨][410.02MB]
- 群星《歌手2024 第11期》[320K/MP3][93.88MB]
- 群星《歌手2024 第11期》[FLAC/分轨][496.06MB]
- 群星《国风超有戏 第7期》[320K/MP3][30.73MB]
- 模拟之声慢刻CD《试音天品8[女声低音炮]》[低速原抓WAV+CUE]
- 群星《抖烧第三季DSD》[低速原抓WAV+CUE]
- [ABC]蔡琴《百万琴歌[6N纯银镀膜]》[低速原抓WAV+CUE]
- 群星《国风超有戏 第7期》[FLAC/分轨][147.99MB]
- 群星《闪光的夏天 第3期》[320K/MP3][61.94MB]
- 群星《闪光的夏天 第3期》[FLAC/分轨][336MB]
- 【迷幻电音】Elea-2024-Hypnos(FLAC)
- 【民族融合】VA-2024-TheOrientCollective:GoldenSand(FLAC)
- 谭嘉仪-EyesOnMe新曲+精选2022【低速原抓WAV+CUE】
- 尚士达《莫回头》[320K/MP3][184.64MB]
- 尚士达《莫回头》[Hi-Res][24bit 48kHz][FLAC/分轨][1.27G]