element中input里如何输入保留两位的数字(针对金额)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了element中input里如何输入保留两位的数字(针对金额)相关的知识,希望对你有一定的参考价值。
<el-input v-model="coefficient1" oninput="value = value.replace(/^([1-9]\d*(\.[\d]0,2)?|0(\.[\d]0,2)?)[\d.]0,1/g, '$1$2.$3')" type="number" class="tdipt" @mousewheel.native.prevent/>
这样写之后会出现 100.55. 多个小数点。请问如何解决。或者是其他的方法
<head>
<meta charset="UTF-8">
</head>
<body>
<input type="text" id="input" />
<script>
var input=document.getElementById("input");
function AddEventInput(i)
//这里就不做兼容了
i.addEventListener("blur",function()
var value=i.value;
var reg=/(^[1-9]1[0-9]*$)|(^[0-9]*\.[0-9]2$)/
if(!reg.test(value))
console.log("请输入大于0的整数或者保留两位小数")
else
console.log("输入正确");
;
);
AddEventInput(input);
</script>
</body>
</html>
这里定义了一个函数AddEventInput有一个参数i其实就是需要传入的input节点
函数AddEventInput为传入的节点添加了失去焦点事件
在失去焦点事件触发的函数中定义了一个正则 正则的意思我就不详细说了
正则是当input的值是大于0的整数或者保留两位数的小数就返回true 不是就返回false追问
oninput="value = value.replace(/(^[1-9]1[0-9]*$)|(^[0-9]*\.[0-9]2$)/, '$1')"
之后只能写入一位小数,而且.的问题还是没有解决可以输入12.1. 你可以自己验证
(也可以使用局部指令,可以参考文档 https://cn.vuejs.org/v2/guide/custom-directive.html):
1.文件结构:
文件夹结构, src 下新建一个 directive 文件夹
directive 文件夹下又新建一个 el-input 文件夹
el-input 文件夹下,新建 index.js 和 onlyNumber.js 文件
2.文件代码
onlyNumber.js 核心实现追问
onlyNumber.js写什么?index写什么
参考技术C <el-input v-model="data"/>watch:
data()
let a=this.data.split(".");
if(a.length===1) this.data=a[0].replace(/[^\d]/g,'')
else this.data=a[0].replace(/[^\d]/g,'')+"."+a[1].replace(/[^\d]/g,'');
参考技术D <el-input v-model="coefficient1" @change="handlerChange" type="number" class="tdipt" @mousewheel.native.prevent/>handlerChange (val)
this.coefficient1 = Number(val).toFixed(2)
追问
你的答案是错的。谢谢。就是这个点去不掉
以上是关于element中input里如何输入保留两位的数字(针对金额)的主要内容,如果未能解决你的问题,请参考以下文章