vue项目移动端实现项目移动端实现ip输入框问题输入框问题
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;