核心内容摘要
避坑指南:QT5 stackedWidget页面切换的5个常见错误与解决方案
方法1oninput 原生事件代码复杂的正则表达式代码!-- 方法1oninput 原生事件复杂的正则表达式代码 -- el-input v-modellocalCapitalInfo.capitalTotal oninputvaluevalue.replace(/[^\d.-]/g, ).replace(/^(-?)0(\d)/, $1$
.replace(/(?!^)-/g, ).replace(/^(-?)(\.)/, $
).replace(/(\..*)\./g, $
.replace(/^(-?\d*\.\d{0,2}).*/g, $
clearable /代码易读的JavaScript代码直接在这里写代码!-- 方法1oninput 原生事件易读的JavaScript代码直接在这里写代码 -- el-input v-modellocalCapitalInfo.capitalTotal oninput let v this.value; //
只允许数字、小数点、负号 v v.replace(/[^\d.-]/g, ); //
处理负号只能出现在开头且只出现一次 let hasNegative false; if (v.includes(-)) { // 检查负号是否在开头 if (v[0] -) { hasNegative true; // 保留开头的负号移除其他位置的负号 v - v.slice(
.replace(/-/g, ); } else { // 负号不在开头移除所有负号 v v.replace(/-/g, ); } } //
处理单独的小数点 if (v .) v
; if (v -.) v -
; //
处理前导零去除整数部分的前导零但保留小数点和负数的情况 if (hasNegative) { // 负数情况-
12 应该保留为 -
12 // 只有当负号后面有多个0且这些0后面不是小数点时才去除前导零 // 例如-0123 应该变成 -123 v v.replace(/^(-?)0(\d)/, $1$
; } else { // 正数情况0123 应该变成 123 v v.replace(/^0(\d)/, $
; } //
去除多余的小数点只保留第一个 const firstDot v.indexOf(.); if (firstDot ! -
{ const beforeDot v.substring(0, firstDot
; const afterDot v.substring(firstDot
.replace(/\./g, ); v beforeDot afterDot; } //
限制小数点后最多两位 const dotIndex v.indexOf(.); if (dotIndex ! -
{ const integerPart v.substring(0, dotIndex); const decimalPart v.substring(dotIndex 1, dotIndex
; v integerPart . decimalPart; } //
特殊情况处理如果只有负号或负号加0保留它们 if (v - || v -
{ this.value v; return; } //
处理以0开头的非小数情况 if (v.length 1 v[0] 0 v[1] ! .) { v v.substring(
; } this.value v; clearable /代码易读的JavaScript代码使用常量
创建常量 统一导出src\constants\ExecutionCode.constants.ts// 执行代码类常量 /** * 金额输入框数输入时执行的代码遇到需转义的符号如反斜杠 \,需要使用两个反斜杠\\处理反斜杠\ */ // export const TOTAL_INPUT_EXECUTED_CODE // let v this.value; // //
只允许数字、小数点、负号 // v v.replace(/[^\\d.-]/g, ); // //
处理负号只能出现在开头且只出现一次 // let hasNegative false; // if (v.includes(-)) { // // 检查负号是否在开头 // if (v[0] -) { // hasNegative true; // // 保留开头的负号移除其他位置的负号 // v - v.slice(
.replace(/-/g, ); // } else { // // 负号不在开头移除所有负号 // v v.replace(/-/g, ); // } // } // //
处理单独的小数点 // if (v .) v
; // if (v -.) v -
; // //
处理前导零去除整数部分的前导零但保留小数点和负数的情况 // if (hasNegative) { // // 负数情况-
12 应该保留为 -
12 // // 只有当负号后面有多个0且这些0后面不是小数点时才去除前导零 // // 例如-0123 应该变成 -123 // v v.replace(/^(-?)0(\\d)/, $1$
; // } else { // // 正数情况0123 应该变成 123 // v v.replace(/^0(\\d)/, $
; // } // //
去除多余的小数点只保留第一个 // const firstDot v.indexOf(.); // if (firstDot ! -
{ // const beforeDot v.substring(0, firstDot
; // const afterDot v.substring(firstDot
.replace(/\\./g, ); // v beforeDot afterDot; // } // //
限制小数点后最多两位 // const dotIndex v.indexOf(.); // if (dotIndex ! -
{ // const integerPart v.substring(0, dotIndex); // const decimalPart v.substring(dotIndex 1, dotIndex
; // v integerPart . decimalPart; // } // //
特殊情况处理如果只有负号或负号加0保留它们 // if (v - || v -
{ // this.value v; // return; // } // //
处理以0开头的非小数情况 // if (v.length 1 v[0] 0 v[1] ! .) { // v v.substring(
; // } // this.value v; // ; /** * 金额输入框数输入时执行的代码使用 String.raw 可以原样处理字符串不解析转义序列对于正则表达式String.raw 非常有用 */ export const TOTAL_INPUT_EXECUTED_CODE String.raw let v this.value; //
只允许数字、小数点、负号 v v.replace(/[^\d.-]/g, ); //
处理负号只能出现在开头且只出现一次 let hasNegative false; if (v.includes(-)) { // 检查负号是否在开头 if (v[0] -) { hasNegative true; // 保留开头的负号移除其他位置的负号 v - v.slice(
.replace(/-/g, ); } else { // 负号不在开头移除所有负号 v v.replace(/-/g, ); } } //
处理单独的小数点 if (v .) v
; if (v -.) v -
; //
处理前导零去除整数部分的前导零但保留小数点和负数的情况 if (hasNegative) { // 负数情况-
12 应该保留为 -
12 // 只有当负号后面有多个0且这些0后面不是小数点时才去除前导零 // 例如-0123 应该变成 -123 v v.replace(/^(-?)0(\d)/, $1$
; } else { // 正数情况0123 应该变成 123 v v.replace(/^0(\d)/, $
; } //
去除多余的小数点只保留第一个 const firstDot v.indexOf(.); if (firstDot ! -
{ const beforeDot v.substring(0, firstDot
; const afterDot v.substring(firstDot
.replace(/\./g, ); v beforeDot afterDot; } //
限制小数点后最多两位 const dotIndex v.indexOf(.); if (dotIndex ! -
{ const integerPart v.substring(0, dotIndex); const decimalPart v.substring(dotIndex 1, dotIndex
; v integerPart . decimalPart; } //
特殊情况处理如果只有负号或负号加0保留它们 if (v - || v -
{ this.value v; return; } //
处理以0开头的非小数情况 if (v.length 1 v[0] 0 v[1] ! .) { v v.substring(
; } this.value v; ;src\constants\index.tsexport * from ./ExecutionCode.constants;
使用常量src\views\capital\CapitalInfo.vue!-- 方法1oninput 原生事件易读的JavaScript代码使用常量 -- el-input v-modellocalCapitalInfo.capitalTotal :oninputTOTAL_INPUT_EXECUTED_CODE clearable /效果支持
00.
00.
000.
10.
0
45-
1
45-
1不支持.1
1-.1 -
0.
01
0.
-0 应该是0-.0 -
0 应该是
0-.00 -
00 应该是
00-.01 -
01!-- 处理金额输入只能输入数字、负号和小数点最多两位小数不能0开头只能开头输入负号只能输入一次负号和小数点支持.01 -- !-- 方法1oninput 原生事件 -- el-input v-modellocalCapitalInfo.capitalTotal oninputvaluevalue.replace(/[^\d.-]/g, ).replace(/^(-?)0(\d)/, $1$
.replace(/(?!^)-/g, ).replace(/(\..*)\./g, $
.replace(/^(-?\d*\.\d{0,2}).*/g, $
clearable /效果支持.1-.
1.