最终效果如下



实现要求:

  1. 如果输入的内容不是非负整数,那么提示报错,并且将值变为输入前的内容;
  2. 如果输入正确,则当输入的内容发生改变并且失去焦点以后,触发事件,重新获取列表;

实现思路

  1. 使用原生的input框,更容易控制;
  2. 当输入框获取焦点以后,保存原始值;
  3. 监听回车点击事件与change事件,判断输入的值是否满足条件:
    • 如果满足条件,那么就根据输入的内容更新内容,并且重新获取列表内容;
    • 如果不满足条件,报错,同时通过操作dom,将inputvalue值进行改变;

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-modelel-input组合,采用原生input标签,可能更灵活。因为当使用v-model(如下面的这种类型)时,如果判断输入错误以后,尽管可以通过操作dom,使inputvalue值发生改变,但是通过v-model绑定的内容依旧为我们输入的错误内容,也就是说当我们下次获取焦点时,如果保存的是v-model的内容,那么将是上次输入的错误信息;
<el-input ... v-model="scope.row.orderNum" @focus="saveTemp(scope.row.orderNum)"></el-input>
  • 这儿再啰嗦一句,v-model绑定的内容,是通过@input输入的内容,无法通过js进行触发,也就是说无法通过jsv-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框输入实现排序功能的更多相关文章

  1. 基于element UI 的上传插件

    为了不再重复的上传文件,做了一个统一选择文件和上传文件的 基于 element UI :http://element-cn.eleme.io 前端实现文件下载和拖拽上传 演示 用法 <uploa ...

  2. js input框输入1位数字后自动跳到下一个input框聚焦

    // input框输入1位数字后自动跳到下一个input聚焦 function goNextInput(el){ var txts = document.querySelectorAll(el); f ...

  3. input框输入金额显示千分位

    比如输入:1000000,则显示为1,000,000(或者是保留3位小数:1,000,000.000) 知识点: 1)JavaScript parseFloat() 函数: 定义:parseFloat ...

  4. js控制input框输入数字时,累计求和

    input框输入数字时,自动开始计算累加 <div class="form-group"> <label for="inputPassword3&quo ...

  5. input框输入手机号码分隔显示

    在input框输入手机号码时,自动加入空格按照3,4,4位显示,如: 实现方法如下: <label>手机号码</label><input type="text& ...

  6. element ui源码解析 -- input篇

    el-input是element ui中使用最频繁的组件之一了,分析其构成从四个方面入手:DOM结构,属性,样式,事件入手 DOM结构: <div> <input /> < ...

  7. 基于element ui的图片预览插件

    写插件很简单,满足两个条件即可,一.基本的逻辑思路,二.熟悉插件语法要求.本次Vue插件也比较简单,点击“查看图片”用轮播的方式限制用户上传的图片,如图: 项目采用的是vue-element-admi ...

  8. 模拟邮箱输入邮箱地址、收藏标签。input框输入内容后回车,内容显示成小方块并带删除按钮。

    模拟邮箱输入邮箱地址.收藏标签: 文本框输入文字后按回车键或者分号键,输入框中的文字变成小块并带删除按钮和操作. 页面代码: <!DOCTYPE html> <%@ page lan ...

  9. 解决模糊查询问题 element UI 从服务器搜索数据,输入关键字进行查找

    做项目是遇见下拉框的形式,后台返回来3万多条,用element UI中的select选择器中的搜索还是会造成页面卡顿和系统崩溃,因此用了它的远程搜索功能,发现还不错,解决了这个问题. 代码1 < ...

随机推荐

  1. 【HDOJ】 P2054 A == B ?

    题目意思不太多解释,具体WA的情况可以举出一下特例 0 +0 0.00 0 +1 -2 +1.00 -1.00 +.2 -.2 .0 .1 等等 不过可以发现对上面的数据处理,可以分为以下几步 1.找 ...

  2. 【第二次个人作业】结对作业Core第一组:四则运算生成PB16061082+PB16120517

    [整体概况] 1.描述最终的代码的实现思路以及关键代码. 2.结对作业两个人配合的过程和两个人分工. 3.API接口文档和两个组的对接. 4.效能分析,优化分析和心得体会. [代码实现] 一. 实现功 ...

  3. [工具]Editplus添加son格式化支持

    EditPlus安装包和json.js文件地址 不喜欢CSDN的积分下载和登录下载,不喜欢百度网盘,就这么倔强 https://github.com/michael-deve/CommonData-E ...

  4. Linux 档案目录的结构及功能(鸟哥私房菜)

  5. 小程序学习三 一切的开始app() 小程序的注册

    现在打开 app.js //app.js App({ onLaunch(options) { //小程序初始化 // console.log("小程序初始化", options) ...

  6. JAVA错误:Exception in thread "main" java.lang.NullPointerException

    JAVA错误:Exception in thread "main" java.lang.NullPointerException例如: Exception in thread &q ...

  7. FreeMarker简单入门到使用

    FreeMarker freemarker是一个用java开发的模版引擎,百度百科: 常用的java模版还有快要被抛弃的Jsp(熟悉).Thymeleaf(了解).Velocity(不知) freem ...

  8. weblogic重置控制台密码

    1.备份文件如下文件 %DOMAIN_HOME%/security/DefaultAuthenticatorInit.ldift 2.进入%DOMAIN_HOME%/security目录,执行下列命令 ...

  9. slot 的简单用法

    注:默认在父组件调用子组件时<SlotChild></SlotChild>中文字不会显示.但是在子组件加入<slot></slot>后,<Slot ...

  10. Java-Class-C:com.alibaba.fastjosn.JSON

    ylbtech-Java-Class-C:com.alibaba.fastjosn.JSON 1.返回顶部 1.1.import com.alibaba.fastjson.JSON;import co ...