基于Element-UI的el-table,input框输入实现排序功能
最终效果如下
实现要求:
- 如果输入的内容不是非负整数,那么提示报错,并且将值变为输入前的内容;
- 如果输入正确,则当输入的内容发生改变并且失去焦点以后,触发事件,重新获取列表;
实现思路
- 使用原生的
input
框,更容易控制; - 当输入框获取焦点以后,保存原始值;
- 监听回车点击事件与
change
事件,判断输入的值是否满足条件:- 如果满足条件,那么就根据输入的内容更新内容,并且重新获取列表内容;
- 如果不满足条件,报错,同时通过操作
dom
,将input
的value
值进行改变;
html部分
1. 代码部分
<el-table-column align="center" style="width:20%" label="排序">
<template slot-scope="scope">
<input type="text" maxlength="2" class="order-input" @keyup.enter.native="handleChangeOrder($event, scope.row, $event.target.value)"
@change="handleChangeOrder($event, scope.row, $event.target.value)" :value="scope.row.orderNum" @focus="saveTemp(scope.row.orderNum)">
</template>
</el-table-column>
- 通过
@focus
这个事件,将原始值保存起来 - 通过
@keyup.enter.native
、@change
这两个事件,触发判断输入的内容是否合理,其中我们可以通过传入的$event
获取到需要的dom
($event.target
就是输入框对应的input
标签),同时通过$event.target.value
传入输入框里面的内容;
2. 注意部分
- 不要使用
v-model
与el-input
组合,采用原生input
标签,可能更灵活。因为当使用v-model
(如下面的这种类型)时,如果判断输入错误以后,尽管可以通过操作dom
,使input
的value
值发生改变,但是通过v-model
绑定的内容依旧为我们输入的错误内容,也就是说当我们下次获取焦点时,如果保存的是v-model
的内容,那么将是上次输入的错误信息;
<el-input ... v-model="scope.row.orderNum" @focus="saveTemp(scope.row.orderNum)"></el-input>
- 这儿再啰嗦一句,
v-model
绑定的内容,是通过@input
输入的内容,无法通过js
进行触发,也就是说无法通过js
将v-model
绑定的内容变为以前的内容(仅仅指el-table
里面通过scope.row
绑定的数据)
js部分
1. 代码部分
handleChangeOrder(event, row, orderNum) {
if (!isPositiveNum(+orderNum)) {
event.target.value = this.orderTemp;
this.$message({
message: '请输入非负整数',
type: 'warning'
});
return
}
...
this.put(); // 这儿是update
...
this.getList(); // 这儿是重新获取列表
...
},
saveTemp (value) {
this.orderTemp = value;
}
2. 注意部分
isPositiveNum()
为引入的判断是否是非负整数的函数
export function isPositiveNum (s) {
var re = /^(0|[1-9]\d*)$/ ;
return re.test(s);
}
基于Element-UI的el-table,input框输入实现排序功能的更多相关文章
- 基于element UI 的上传插件
为了不再重复的上传文件,做了一个统一选择文件和上传文件的 基于 element UI :http://element-cn.eleme.io 前端实现文件下载和拖拽上传 演示 用法 <uploa ...
- js input框输入1位数字后自动跳到下一个input框聚焦
// input框输入1位数字后自动跳到下一个input聚焦 function goNextInput(el){ var txts = document.querySelectorAll(el); f ...
- input框输入金额显示千分位
比如输入:1000000,则显示为1,000,000(或者是保留3位小数:1,000,000.000) 知识点: 1)JavaScript parseFloat() 函数: 定义:parseFloat ...
- js控制input框输入数字时,累计求和
input框输入数字时,自动开始计算累加 <div class="form-group"> <label for="inputPassword3&quo ...
- input框输入手机号码分隔显示
在input框输入手机号码时,自动加入空格按照3,4,4位显示,如: 实现方法如下: <label>手机号码</label><input type="text& ...
- element ui源码解析 -- input篇
el-input是element ui中使用最频繁的组件之一了,分析其构成从四个方面入手:DOM结构,属性,样式,事件入手 DOM结构: <div> <input /> < ...
- 基于element ui的图片预览插件
写插件很简单,满足两个条件即可,一.基本的逻辑思路,二.熟悉插件语法要求.本次Vue插件也比较简单,点击“查看图片”用轮播的方式限制用户上传的图片,如图: 项目采用的是vue-element-admi ...
- 模拟邮箱输入邮箱地址、收藏标签。input框输入内容后回车,内容显示成小方块并带删除按钮。
模拟邮箱输入邮箱地址.收藏标签: 文本框输入文字后按回车键或者分号键,输入框中的文字变成小块并带删除按钮和操作. 页面代码: <!DOCTYPE html> <%@ page lan ...
- 解决模糊查询问题 element UI 从服务器搜索数据,输入关键字进行查找
做项目是遇见下拉框的形式,后台返回来3万多条,用element UI中的select选择器中的搜索还是会造成页面卡顿和系统崩溃,因此用了它的远程搜索功能,发现还不错,解决了这个问题. 代码1 < ...
随机推荐
- tp6 控制器不存在:app\index\controller\Index
tp6 控制器不存在:app\index\controller\Index config/app.php 修改如下 'auto_multi_app' => true,
- Ubuntu下搭建NFS,并在开发板挂载
---恢复内容开始--- zai root huanjingxiachaozhuo $ su 一.搭建NFS 1.执行命令:sudo apt-get install nfs-kernel-server ...
- 换盘符cd的用法
如果是在本盘内切换文件夹,直接使用cd 后面跟地址即可. 如果是跨区切换地址,cd 后面就需要跟/d,斜杠d, /d就代表着跨分区切换地址. cd /d d:\ C:\ProgramData\Anac ...
- Ubuntu桌面突然卡住,图形界面无反应
1.可能等待几分钟,系统会自动反应过来.你可以选择等待几分钟. 2.绝大多数情况系统是不会反应过来的,这时候可以进入tty终端直接注销用户. (1)Ubuntu有6个tty终端,按住Ctrl+Alt+ ...
- select 可输入的下拉框
<!DOCTYPE html> <html> <head> <title></title> <meta charset="U ...
- Nginx的动静分离
Nginx的动静分离 在之前我们的负载均衡中,我们再jsp中设置了一个背景,这是一个静态资源,Tomcat处理静态资源的效率并没有Nginx高,我们可以通过动静分离将静态资源和动态资源分割开来,Tom ...
- Java中的线程Thread方法之---interrupt()
前几篇都介绍了Thread中的几个方法,相信大家都发现一个相似点,那就是sleep,join,wait这样的阻塞方法都必须捕获一个InterruptedException异常,顾名思义就是一个线程中断 ...
- delphi透明panel组件或者制作方法
//透明Panel控件 unit TranPanel; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, ...
- python round, ceil, flooor
round(num, n) 保留n位小数 round(80.23456, 2) : 80.23 round(100.000056, 3) : 100.0 round(-100.000056, 3) : ...
- Unicode与MultiByte之间的练习: Process Cleaner
#include <cstdio> #include <cstring> #include <windows.h> #include <tlhelp32.h& ...