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

embedded/2024/9/25 11:20:07/

封装组件

<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/embedded/94263.html

相关文章

从“抠图”到“抠视频”,Meta上新AI工具SAM 2。

继2023年4月首次推出SAM&#xff0c;实现对图像的精准分割后&#xff0c;Meta于北京时间2024年7月30日推出了能够分割视频的新模型SAM 2&#xff08;Segment Anything Model 2&#xff09;。SAM 2将图像分割和视频分割功能整合到一个模型中。所谓“分割”&#xff0c;是指区别视…

【C++】类和对象 ——中

1. 赋值运算符重载 1.1 运算符重载 • 当运算符被⽤于类类型的对象时&#xff0c;C语⾔允许我们通过运算符重载的形式指定新的含义。C规定类类型对象使⽤运算符时&#xff0c;必须转换成调⽤对应运算符重载&#xff0c;若没有对应的运算符重载&#xff0c;则会编译报错。 •…

数据结构(学习)2024.8.8(栈,队列)

今天学习的是线性表里面的栈和队列 链表的相关知识可以查看http://t.csdnimg.cn/NX464 顺序表的相关知识可以查看http://t.csdnimg.cn/5IMAZ 目录 栈 栈的定义 栈的特点 顺序栈 结构体 顺序栈的相关操作案例 链式栈 结构体 链式栈的相关操作案例 总结 队列 队列…

【Linux】线程同步和生产消费模型

目录 条件变量 接口 简单使用 生产消费模型 生产消费模型代码 条件变量 上篇博客我们介绍了线程互斥&#xff0c;是通过加锁的方式把共享资源保护起来变成临界资源&#xff0c;同一时刻只允许一个线程访问临界资源 但是不同的线程申请锁的能力是有差别的&#xff0c;就拿抢…

用exceljs和file-saver插件实现纯前端表格导出Excel(支持样式配置,多级表头)

exceljs在Jquery&#xff08;HTML&#xff09;和vue项目中实现导出功能 前言Jquery&#xff08;HTML&#xff09;中实现导出第一步&#xff0c;先在项目本地中导入exceljs和file-saver包第二步&#xff0c;封装导出Excel方法&#xff08;可直接复制粘贴使用&#xff09;第三步&…

整理编程学习笔记的心得

知乎上曾经有过类似的讨论&#xff0c;程序员一般是怎么记自己的编程笔记的&#xff1f;用什么软件记录的&#xff1f;&#xff0c;这是我的答复。 现在重新编辑&#xff0c;调整一些内容&#xff0c;重新发布。 工作上的事情很繁杂&#xff0c;小事情很多&#xff0c;工作时间…

微调LLama 3.1——七月论文审稿GPT第5.5版:拿早期paper-review数据集微调LLama 3.1

前言 对于llama3&#xff0c;我们之前已经做了针对llama3 早7数据微调后的测评 去pk llama2的早7数据微调后&#xff0c;推理测试集中的早期paper&#xff1a;出来7方面review去pk gpt4推理测试集中的早期paper&#xff1a;7方面reviewground truth是早期paper的7方面人工rev…

Docker常见命令

Docker常见命令 以下是一些常见的 Docker 命令及其描述&#xff1a; 命令描述docker --version显示 Docker 的版本信息。docker pull <image>从 Docker 仓库中拉取镜像。docker build -t <name>:<tag> <path>从 Dockerfile 构建镜像并为其指定标签。…