el-input输入数字,带有千分位

news/2024/10/10 22:11:03/

封装组件

<template><el-input@change="changenum"@blur="blurInput"v-model="inputnum1"placeholder="请输入数字"clearable:disabled="disablednum":class=" inputcolor ? 'input_num_dis' : '' "></el-input>
</template>
<script lang="ts" setup>
import { ref, watch } from 'vue'
import { ElMessage } from 'element-plus'
const emit = defineEmits(['getinputnum', 'changeinputnum'])
const inputnum1 = ref('')
interface popoverProps {echoNumber?: string | number //修改时回显数据传参resettingnum?: boolean //查询时重置数据传参,true为重置disablednum?: boolean //详情时数据传参,true为禁用inputcolor?:string  //动态修改样式使用
}
// 使用withDefaults可以为props赋默认值
const props = withDefaults(defineProps<popoverProps>(), {echoNumber: '',resettingnum: false,disablednum: false,inputcolor:'',
})
// 监听存在修改数据
watch(() => props.echoNumber,newValue => {if (props.echoNumber !== undefined) {// 获取原始输入值const originalValue = String(props.echoNumber);// 移除逗号以便转换为数字const cleanValue = originalValue.replace(/,/g, '');// 检查是否为有效的数字if (!/^-?\d+(\.\d+)?$/.test(cleanValue)) {return;}// 转换为数字类型,并保留两位小数const valueAsNumber = Number(cleanValue).toFixed(2);// 分离整数部分和小数部分const parts = valueAsNumber.split('.');const integerPart = parts[0];const decimalPart = parts[1] || '';// 添加千分位分隔符const formattedIntegerPart = integerPart.replace(/\B(?=(\d{3})+(?!\d))/g, ',');// 格式化小数部分const formattedDecimalPart = decimalPart ? decimalPart.padEnd(2, '0') : '00';// 组合整数部分和小数部分let formattedValue = formattedIntegerPart + (decimalPart ? '.' + formattedDecimalPart : '.00');// 对于没有小数部分的整数,保留两位小数if (decimalPart === '') {formattedValue = formattedIntegerPart + '.00';}// 设置输入框的值inputnum1.value = formattedValue}},{ immediate: true, deep: true },
)
watch(() => props.resettingnum,newValue => {if(props.resettingnum){props.resettingnum = falseinputnum1.value = ''}},{ immediate: true, deep: true },
)
// val = val.replace(/[^\d]/g,'');  //不带有千分位的数值function changenum(val){val = val.replace(/[^0-9.]/g, '').replace(/(\.)\./g, '$1');let numval = Number(val);if(numval<0){inputnum1.value = '';ElMessage.warning('输入内容不能小于0!')return false}else{let strnum = String(val);// 分离整数部分和小数部分const parts = strnum.split('.');const integerPart = parts[0];const decimalPart = parts[1] || ''; // 如果没有小数部分,则为 ''// 添加千分位分隔符const formattedIntegerPart = integerPart.replace(/\B(?=(\d{3})+(?!\d))/g, ',');// 将整数部分和小数部分重新组合const inpval = formattedIntegerPart + (decimalPart ? '.' + decimalPart : '');let val2  = inpval;// inputnum1.value = val2;   //带有千分位的数值emit('getinputnum',Number(val) ,val2)}
}function blurInput(event) {// 获取原始输入值const originalValue = event.target.value;// 移除逗号以便转换为数字const cleanValue = originalValue.replace(/,/g, '');// 检查是否为有效的数字if (!/^-?\d+(\.\d+)?$/.test(cleanValue)) {return;}// 转换为数字类型,并保留两位小数const valueAsNumber = Number(cleanValue).toFixed(2);// 分离整数部分和小数部分const parts = valueAsNumber.split('.');const integerPart = parts[0];const decimalPart = parts[1] || '';// 添加千分位分隔符const formattedIntegerPart = integerPart.replace(/\B(?=(\d{3})+(?!\d))/g, ',');// 格式化小数部分const formattedDecimalPart = decimalPart ? decimalPart.padEnd(2, '0') : '00';// 组合整数部分和小数部分let formattedValue = formattedIntegerPart + (decimalPart ? '.' + formattedDecimalPart : '.00');// 对于没有小数部分的整数,保留两位小数if (decimalPart === '') {formattedValue = formattedIntegerPart + '.00';}// 设置输入框的值event.target.value = formattedValue;
}</script>
<style  scoped>
.input_num_dis /deep/ .el-input__inner[disabled] {color: red !important;-webkit-text-fill-color:red !important;
}
</style>

使用:

引用组件 import forminpnum from '@/components/inputNumber/inputnumber.vue'

<forminpnum @getinputnum="getinputnum"  :resettingnum="resettingnum" ></forminpnum>

方法:

function getinputnum(val){

  operateKeyProjectsInfo.searchForm.plannedCaFrom = val

}

拿到不带有千分位的数字


http://www.ppmy.cn/news/1506788.html

相关文章

[MRCTF2020]Ezpop

[MRCTF2020]Ezpop 题目是pop&#xff0c;考的其实就是pop链&#xff0c;可以自己先学学&#xff0c;啥也不会QAQ php反序列化之pop链_pop3.phpwelcome-CSDN博客 POP 面向属性编程(Property-Oriented Programing) 常用于上层语言构造特定调用链的方法&#xff0c;与二进制利用…

【JVM基础14】——垃圾回收-强引用、软引用、弱引用、虚引用的区别

目录 1- 引言&#xff1a;为什么分多种引用类型2- ⭐核心&#xff1a;2-1 强引用2-2 软引用2-3 弱引用2-4 虚引用 3- 小结&#xff1a;3-1 强引用、软引用、弱引用、虚引用的区别&#xff1f; 1- 引言&#xff1a;为什么分多种引用类型 在 Java 中&#xff0c;引用类型被分为强…

240810-Gradio通过HTML组件打开本地文件+防止网页跳转到about:blank

A. 最终效果 B. 可通过鼠标点击打开文件&#xff0c;但会跳转到about:blank import gradio as gr import subprocessdef open_pptx():pptx_path /Users/liuguokai/Downloads/240528-工业大模型1.pptxtry:subprocess.Popen([open, pptx_path])return "PPTX file opened s…

LVS(Linux virual server)详解

目录 一、LVS&#xff08;Linux virual server&#xff09;是什么&#xff1f; 二、集群和分布式简介 2.1、集群Cluster 2.2、分布式 2.3、集群和分布式 三、LVS运行原理 3.1、LVS基本概念 3.2、LVS集群的类型 3.2.1 nat模式 3.2.2 DR模式 3.2.3、LVS工作模式总结 …

Vue引入使用iconfont字体图标

由于element-ui或element-plus提供的图标有时候并不能满足日常需求,所以这篇介绍一下前端引入阿里巴巴矢量图标库使用,不止是vue使用,不限于vue2、vue3,html或是其他框架也是同样的道理,只要引入都是同样可以使用的。 1. 首先进入阿里巴巴矢量图标库官网 官网:https://…

源码编译安装LAMP(HTTP服务,MYSQL ,PHP,以及bbs论坛)

前言&#xff1a;资源 下载在https://download.csdn.net/download/YCyjs/89618650下载&#xff0c;可在生产环境使。 一、安装Apache 下面两个插件是httpd2.4以后的版本所需要 tar xf apr-1.6.2.tar.gz tar xf apr-util-1.6.0.tar.gz 虽然xf通常足够&#xff0c;但使用与压缩…

Android .kl按键布局文件

1.介绍 一个硬件按键的处理流程大致为&#xff1a;当用户按下或释放一个键时&#xff0c;键盘硬件会生成一个扫描码scan code&#xff0c;然后操作系统读取这个scan code&#xff0c;并将scan code扫描码映射到虚拟键码key code&#xff0c;最后操作系统根据映射的keycode生成…

Vue的事件处理、事件修饰符、键盘事件

目录 1. 事件处理基本使用2. 事件修饰符3. 键盘事件 1. 事件处理基本使用 使用v-on:xxx或xxx绑定事件&#xff0c;其中xxx是事件名&#xff0c;比如clickmethods中配置的函数&#xff0c;都是被Vue所管理的函数&#xff0c;this的指向是vm或组件实例对象 <!DOCTYPE html&g…