共计 1654 个字符,预计需要花费 5 分钟才能阅读完成。
import Vue from 'vue';
function checkRule(placeholder, value, verifyType, $vm) {if (placeholder.startsWith('请输入')) {placeholder = placeholder.substr(3);
} else {placeholder = '内容';}
if (value === '' && verifyType === null) {$vm.$toast.fail(`${placeholder} 不能为空 `);
return false;
}
switch (verifyType) {
case 'ip':
if (!$vm.$utils.verifyIp(value)) {$vm.$toast.fail('ip 填写不正确');
return false;
}
break;
}
}
let bindClass = '';
Vue.directive('auto-switch', {bind(el, binding) {if (binding.value.class) {el.classList.add(`v-check-${binding.value.class}-list`);
bindClass = `v-check-${binding.value.class}-list`;
return bindClass;
}
},
inserted(el, binding) {
let autoFocus = 0;
if (binding.value.index) {autoFocus = binding.value.index;}
let inputArray = el.querySelectorAll('.van-field__control');
inputArray[autoFocus].focus();
for (let i = 0; i < inputArray.length; i++) {inputArray[i].setAttribute('focusIndex', i);
inputArray[i].addEventListener('keyup', event => {if (event.keyCode === 13) {let verifyType = event.target.getAttribute('verifyType'),
attrIndex = Number(event.target.getAttribute('focusIndex')),
$vm = window.vm.__proto__,
{placeholder, value} = event.target;
if (binding.value.verify) {if (checkRule(placeholder, value, verifyType, $vm) === false) {return false;}
}
if (attrIndex < inputArray.length - 1) {inputArray[attrIndex + 1].focus();}
}
});
}
}
});
Vue.directive('check-submit', {inserted(el, binding) {el.addEventListener('click', () => {let inputArray = document.querySelectorAll(`.${bindClass} .van-field__control`);
for (let i = 0; i < inputArray.length; i++) {let verifyType = inputArray[i].getAttribute('verifyType'),
$vm = window.vm.__proto__,
{placeholder, value} = inputArray[i];
if (checkRule(placeholder, value, verifyType, $vm) === false) {return false;}
}
let submit = binding.value.fn;
submit();});
}
});
正文完
发表至: javascript
2019-08-19