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. 多个小数点。请问如何解决。或者是其他的方法

参考技术A <html>
<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. 你可以自己验证

参考技术B 以下是使用全局指令的案例

(也可以使用局部指令,可以参考文档 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里如何输入保留两位的数字(针对金额)的主要内容,如果未能解决你的问题,请参考以下文章

python 如何输入小数

vue输入金额,仅输入数字并且保留两位小数

input 保留两位小数 并且只能有一个小数点

如何在excel中保留小数点后两位

如何在Python中保留小数?

MATLAB如何使计算结果保留4位有效数字