vue

您所在的位置:网站首页 手机虚拟键盘使用方法 vue

vue

#vue| 来源: 网络整理| 查看: 265

2.4 core.js /** * 点击除输入框及虚拟键盘外元素时,隐藏虚拟键盘 * @param {e} 点击的元素 */ export const judgeCloseKeyboard = e => { e.stopPropagation(); // 阻止事件冒泡 let arr = document.querySelectorAll('.input-keyboard'); // 设置目标区域 let flag = false; const excludeClassName = [ 'input-keyboard', // 带虚拟键盘的输入框 'el-input__inner', // 输入框 'el-input__clear', // 输入框-清除图标 'el-textarea__inner', // 输入框-textarea 'hg-candidate-box', // 中文选择框 'hg-candidate-box-prev', // 中文选择框-上一页 'hg-candidate-box-list', // 中文选择框-内容列表 'hg-candidate-box-list-item', // 中文选择框-内容选项 'hg-candidate-box-next', // 中文选择框-下一页 'hg-theme-default', // 虚拟键盘 'hg-rows', // 虚拟键盘-内容 'hg-row', // 虚拟键盘-行 'hg-button' // 虚拟键盘-按钮 ]; let classList = e.target.classList.value.split(' '); let concatArr = excludeClassName.concat(classList); arr.forEach(ele => { // 判断点击事件发生在区域外的条件是:1. 点击事件的对象不是目标区域本身 2. 事件对象同时也不是目标区域的子元素 if ( // 判断当前点击的元素类名,是否包含排除元素 new Set(concatArr).size === concatArr.length && !ele.contains(e.target) ) { flag = true; } }); flag && hideKeyboard(); }; /** * 隐藏虚拟键盘 */ export const hideKeyboard = () => { let arr = document.querySelectorAll('.hg-theme-default'); arr.forEach(ele => { ele.style.visibility = 'hidden'; }); }; 2.5 mixins.js // 虚拟键盘输入公用方法 export const keyboardInputMixin = { methods: { // 对部分表单字段进行校验 validataForm(field, formname = 'form') { this.$refs[formname].validateField(field); }, // 虚拟键盘输入 formItemChange(val, formItemField) { this.form[formItemField] = val; this.validataForm(formItemField); }, }, };   3.遇到的问题 3.1 列表可复合搜索,搜索部分是组件ref为search,虚拟键盘输入后,直接修改输入框绑定的值,发现变量值改变,但页面未更新

解决方法:

使用$set方法修改复合搜索条件值

keyWordsChange(val) { this.$set(this.$refs.search.form, 'keyWords', val); // 响应式对象修改数据  ...}  3.2 表单内有两个输入框表单项,切换radio通过v-if判断显示其中一个,发现在切换radio后,虚拟键盘的样式错乱

解决方法:

使用v-show判断,但我的两个表单项是必填的,校验时就有问题,这个问题可通过单独给两个表单项写校验规则解决

... { if (this.form.typeRadio === 1) { if (value === '') { return callback(new Error('请输入名称')); } else { callback(); } } else { callback(); } }; ...  3.3 点击虚拟键盘报错:Uncaught TypeError: t.slice is not a function,输入无效

原因:

输入框的值是后端返回的数字,是number类型

解决方法:

使用toString()转换返回值

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3