当前位置: 首页 > news >正文

南宁网络营销网站网站配色案例

南宁网络营销网站,网站配色案例,免费空间自带域名,wordpress 裁剪需求#xff1a; vxe-table表格 1、新增的时候#xff0c;vxe-table第一行的第一个输入框聚焦 2、输入完成后#xff0c;按回车#xff0c;自动跳到同一行的下一个输入框 3、当在同一行的最后一个输入框输入完成后#xff0c;按回车跳回第一个输入框并选中状态且复选框为选…需求 vxe-table表格 1、新增的时候vxe-table第一行的第一个输入框聚焦 2、输入完成后按回车自动跳到同一行的下一个输入框 3、当在同一行的最后一个输入框输入完成后按回车跳回第一个输入框并选中状态且复选框为选中状态 4、点新增滚动条过长遮挡住第一列的话要向左滚动到最开始的位置 5、表格中有两种下拉框原生的lel-select及封装后的select组件面板打开时的上下移动及回车赋值和直接点击赋值后要聚焦 6、表格中有封装的组件输入框el-table输入值的时候显示el-table使用的el-popover,实现类似于el-selelct下拉框面板的效果增加了svg图标点击打开弹窗弹窗双击行或单击后点确定赋值之后输入框要聚焦 需求优化 花了两天的时间 踩过的坑 1、el-select选择框面板打开点击选值后回车向右跳转后el-seelct依然打开面板问题 2、列表同一行任意位置开始按回车键触发不了回车事件 3、回车事件中获取不到自定义属性问题 4、列表同一行最后一列回车时跳到第一列中聚焦 且选中状态 5、列表横向过长出现滚动条时新增滚动条如何回到第一列且聚焦 6、回车向右跳到下一输入框聚焦时滚动条遮挡导致下一输入框显示不全滚动条如何滑至最右侧 7、vxe-table复选框如何手动选中且保持原有的勾选效果 实现思路; 1、在utils文件夹下定义一个js文件全局注册后给输入框下拉框等编辑组件绑定回车事件 2、给所有列表Dom元素添加自定义索引 备注示例代码只保留了和功能相关的代码 1、父页面中vxe-table封装成子组件 vxeTablerefvxeTableRef :columnscolumns:data-sourcelistselectAllEventselectAllEventgetListgetList addRowaddRowhandleDelListhandleDelList:formDataformData:enterFlag.syncenterFlag/vxeTable //新增 handleAddList(){ this.list.unshift({id: this.uuid(),money: 0,cash: 0,checked:false})this.list.forEach(item{item.checked false})this.dealFirstInput() },dealFirstInput(index, flag) {this.$nextTick(() {// vxe-body--row从1开始let lastIndexif (flag up) {lastIndex index 1} else if (flag down) {lastIndex index 2}// 增加下行if (index0flag) {// 获取第一个输入框元素const lastElement .vxe-table--body-wrapper .vxe-table--body .vxe-body--row:nth-child(${lastIndex}) .vxe-body--column:nth-child(3) .el-input__innerconst tolastInput this.$refs.vxeTableRef.$refs.vxeTable.$el.querySelector(lastElement)// // 聚焦第一个输入框tolastInput.focus()} else {// 新增和增加上行// 获取第一个输入框元素const firstInput this.$refs.vxeTableRef.$refs.vxeTable.$el.querySelector(.vxe-table--body-wrapper .vxe-table--body .vxe-body--row:nth-child(1) .vxe-body--column:nth-child(3) .el-input__inner)// // 聚焦第一个输入框firstInput.focus()}this.enterFlag true})},//列表操作列增加上行增加下行addRow(row, index, key) {const newObj { money: 0, cash: 0, id: this.uuid() }if (index 0) {this.enterFlag !this.enterFlagif (key previous) {this.list.splice(index, 0, newObj)this.dealFirstInput(index, up)return}this.list.splice(index 1, 0, newObj)this.dealFirstInput(index, down)}}2、子组件vxe-table内部 el-form :modelform refform :rulesrules :show-messagefalsevxe-table refvxeTableclassmytable-scrollbar:row-config{ height: 36 }borderscrollhandleScrollshow-overflowresizablecheckbox-allselectAllEventcheckbox-changeselectAllEvent:footer-methodfooterMethod:datalist:column-config{ resizable: true }resizable-changeresizableChange:checkbox-config{ checkAll: true }vxe-column typecheckbox width60 fixedleft :header-aligncenter :aligncenter :resizablefalse/vxe-columntemplate v-forconfig in newColumnsvxe-column:keyconfig.field:widthconfig.width:fieldconfig.field:visibleconfig.visible:header-aligncenter :aligncenter:fixedconfig.freeze true ? left : :min-widthconfig.field:resizabletruetemplate #default{ row, $rowIndex, $columnIndex } v-ifconfig.field xxxel-form-item :proplist. $rowIndex .notes :rulesrules.xxxel-inputrefinputv-modelrow.xxxkeyup.enter.native$event tableKeydown($event, $rowIndex, $columnIndex) clearable/el-input/el-form-item/templatetemplate #default{ row, $rowIndex, $columnIndex } v-else-ifconfig.field xxxel-select:refselect $columnIndex input $rowIndexv-modelrow.xxxkeyup.enter.native$event tableKeydown($event, $rowIndex, $columnIndex)clearablefilterable:disabledisEnabledel-option v-foritem in deptOption :keyitem.deptId :valueitem.deptId :labelitem.deptName/el-option/el-select/template/vxe-column/vxe-table/el-form props: {enterFlag: {type: Boolean,default: false,},}watch:{enterFlag: {handler(newVal) {if (newVal true) {this.getAllInput()}},deep: true,}, }// 滚动事件getAllInput() {setTimeout(() {this.$nextTick(() {this.$refs.vxeTable.scrollTo(0)})}, 500)},最重要的是js export function tableKeydown(e, rowIndex, columnIndex) {//事件对象兼容let ev e || window.event || arguments.callee.caller.arguments[0]//通过ev 获取 当前input 名称 用于判断属于哪列let className ev.target.offsetParent.className//获取所有inputlet inputAll document.querySelectorAll(.mytable-scrollbar .el-input__inner)//获取所有索引组成的数组const inputIndexs []for (var i 0; i inputAll.length; i) {inputIndexs.push(i)}//按索引增加自定义属性,这里遇到的坑是js中之前已经增加过自定义属性代码复制过来的时候没有改导致一直查找不到我现在增的//自定义属性customFocusIndex一定要保证自定义属性的唯一性for (var i 0; i inputIndexs.length; i) {inputAll[i].setAttribute(customFocusIndex, inputIndexs[i])}let attrIndex parseInt(ev.target.getAttribute(customFocusIndex))// ev.keyCode 13代表按下的是回车向上键33向下键34if (ev ev.keyCode 13) {//每次回车1下一个输入框的索引attrIndex 1//如果遇到禁用列多加一次索引for (var i attrIndex; i inputAll.length; i) {if (inputAll[i] inputAll[i].disabled) {attrIndex 1} else {break}}//一行一共有多少列这里写死了const rowline rowIndex * 12 //第10列之后都是禁用列这里也写死了第10列代表最后一列if (columnIndex 10) {// 最后一列跳转到第一列inputAll[rowline].focus()inputAll[rowline].select()//调用scrollTo方法手动将滚动条滚动到第一列setTimeout(() {this.$nextTick(() {this.$refs.vxeTable.scrollTo(0)})}, 500)//最后一列调整到第一列的时候要手动选中复选框使用setCheckboxRow方法const vxeTable this.$refs.vxeTableconst data this.$refs.vxeTable.getData()vxeTable.setCheckboxRow(data[rowIndex],true)this.$refs.vxeTable.loadData(data)// 下拉框点击选择下拉框比输入框多一个类名is-focus通过此区分if (className.indexOf(is-focus) ! -1) {//动态获取el-select的实例防止重复行索引列索引都拼接上了let DictselectRef select columnIndex input rowIndex//封装的el-select组件有两层ref根据自己定义的refif (this.$refs[DictselectRef][0].$refs.selectRef) {// dictSelectthis.$refs[DictselectRef][0].$refs.selectRef.visible falsethis.$refs[DictselectRef][0].$refs.selectRef.blur()this.$refs[DictselectRef][0].$refs.selectRef.$refs.reference.$refs.input.hidden true} else {// el-select 原生el-selectthis.$refs[DictselectRef].visible falsethis.$refs[DictselectRef][0].blur()this.$refs[DictselectRef][0].$refs.reference.$refs.input.hidden true}}return}if (className.indexOf(el-input--suffix) ! -1) {// 下拉框点击选择if (className.indexOf(is-focus) ! -1) {let DictselectRef select columnIndex input rowIndexif (this.$refs[DictselectRef][0].$refs.selectRef) {// dictSelectthis.$refs[DictselectRef][0].$refs.selectRef.visible falsethis.$refs[DictselectRef][0].$refs.selectRef.blur()this.$refs[DictselectRef][0].$refs.selectRef.$refs.reference.$refs.input.hidden true} else {// el-selectthis.$refs[DictselectRef].visible falsethis.$refs[DictselectRef][0].blur()this.$refs[DictselectRef][0].$refs.reference.$refs.input.hidden true}}//当第8列回车的时候会因为滚动条遮挡看不见第九列是否光标已进入所以加了滚动条向右滚动事件if (columnIndex 8) { let scrollLeft this.$refs.vxeTable.$el.scrollWidthsetTimeout(() {this.$nextTick(() {this.$refs.vxeTable.scrollTo(scrollLeft)})}, 500)}if (inputAll[attrIndex]) {inputAll[attrIndex].focus()}}} }
http://www.hkea.cn/news/14295286/

相关文章:

  • 网站在哪里搜索百度投诉中心人工电话
  • 漳州网站建设技术客户管理软件
  • 博客网站开发背景大连市城乡建设厅网站
  • 八大恶心的网站制作林州网站建设哪家便宜
  • 华丰建设股份有限公司网站常州男科医院
  • 江西赣建建设监理网站北京电力建设公司官网
  • 如何建网站快捷方式企业网站文章后台添加
  • 开福区网站建设中网站制作和美工
  • 网站建设推广是什么工作室h5模板网站免费
  • 佛山网站建设方案服务jquery 案例网站
  • 山东省工程建设管理信息网站wordpress 在线咨询
  • 网站没备案可以上线吗济南冰河世纪网站建设
  • 电商网站现状分析快速排名方案
  • 什么是品牌网站建设html5网站开发工具
  • 网站可以更更换空间吗宁波seo外包sem
  • 网站常用布局方法怎么创建网页快捷键在桌面上
  • 郑州网站建设(智巢)html5网站地址
  • 一个人开发一个网站需要多久wordpress php 7.0
  • 网站设计分享招聘门户网站有哪些
  • 手机网站建设视频教程wordpress载入慢
  • 建设网站的价格分析平面设计好就业吗
  • 上海有名的网站建设公司wordpress 不兼容ie
  • 备案后可以修改网站吗服务器创建网站
  • 做的很好的画册网站做网站gif代码
  • 西安模板建站公司拱墅抖音seo搜索排名推广
  • 网站建设哪家便苏州网站小程序app开发公司
  • 网站开发用什么语言最多网站建设相关推荐
  • 去国外做非法网站吗如何做一个手机网站
  • 备案成功后多久可以打开网站网站百度不收录了
  • 工程平台网seo公司是什么意思