vue實現表單輸入框數字類型校驗功能

vue實現表單輸入框數字類型校驗功能

1. 樣式代碼

<el-form-item label="訂單總價"><el-input   size="small" v-model="form.totalPrice" placeholder="請輸入訂單總價 正整數或者2位數小數"  @input="check(form.totalPrice)"></el-input>
</el-form-item>

在HTML表單里使用 input事件來監聽輸入值的變化,一單數據變化,就觸發校驗規則。輸入框輸入的類型 都是字符串類型,要把字符串轉換成數字類型。

在HTML中,無論是原生的input元素還是Element UI的el-input組件,當用戶在輸入框中輸入數字時,這些輸入值默認會被當作字符串類型處理。

2 methods 正則表達式校驗輸入的值

//正則表達式校驗訂單價格輸入的值
check(value) {const Regex = /^\d+(\.\d{1,2})?$/;if (!Regex.test(value)) {this.$notify.warning("訂單總價請輸入正整數或者2位數小數")}
},

但是 監聽校驗 只是對輸入值校驗,如果用戶不聽提示,執意提交非數字類型的,還是能提交到后臺,導致后臺因為字段類型不同而報錯。

所以input事件校驗可以不要。

報錯信息如下:

JSON parse error: Cannot deserialize value of type `java.lang.Double` from String "十": not a valid Double value; nested exception is com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `java.lang.Double` from String "十": not a valid Double value

3 提交訂單時 再校驗 如果校驗不通過不允許提交表單

3.1 使用vue方法校驗

在methods 提交表單的函數,在調后端接口前做校驗

save(){
let b = this.checkDataType(Number(this.form.totalPrice));if (!b) {this.$notify.warning("訂單總價輸入的不是數字,請輸入數字")return;}
//下面調接口提交表單 省略
}

下面的方法復制到methods 用于校驗一個變量是否是數字類型,如果是非數字會返回false,如果是小數或者整數返回true

//校驗訂單總價輸入的類型
checkDataType(variable) {if (typeof variable === 'number') {return Number.isInteger(variable) || Number.isFinite(variable) && variable % 1 !== 0;} else {return false;}
},

3.2 再次使用正則表達式校驗

所以input事件校驗可以不要,但是提交時的校驗一定要有,這樣才能保證前端傳到后臺的數據跟實體類的字段類型一致的。

 save(){let b = this.check(this.form.totalPrice);if (!b) {this.$notify.warning("訂單總價輸入的不是數字,請輸入數字")return;}
}
//正則表達式校驗訂單價格輸入的值
check(value) {const Regex = /^\d+(\.\d{1,2})?$/;if (Regex.test(value)) {return true} else {return false}
},

其他方法:

1.v-model.number

elmentUI 提供的數字字符串轉換為數字類型,以下是一個使用Element UI的el-input組件并轉換輸入值為數字類型的示例:

html<template><el-form><el-form-item label="輸入框"><el-input v-model.number="inputValue" @input="handleInput"></el-input></el-form-item></el-form>
</template>

但是,使用方式時,無法輸入小數點。可能是我方式不對,鐵們,可以嘗試一下這種,這種可以的話是比價簡單的。

2.InputNumber 計數器

在Element UI中,el-input-number組件是一個專門用于輸入和顯示數字的計數器。它提供了對數字輸入的內置驗證和控制,包括限制輸入范圍、步長等。

:precision=“2” precision 的值必須是一個非負整數,并且不能小于 step 的小數位數。調整精度位數

:step=“0.1” 點擊加減符號時增減的數值

<template><el-input-number v-model="num" :precision="2" :step="0.1" :max="10"></el-input-number>
</template>
<script>export default {data() {return {num: 1}}};
</script>

后端數據類型的獲取和校驗

前端比較校驗傳過來的數據必須是數字類型,才不會報錯。不然雖然后端加上校驗代碼也是會報錯的的。

這是因為 前端調用接口時,把數據傳到后端Spring MVC框架會嘗試將請求參數轉換為相應的方法參數類型。如果數據類型不匹配或無法轉換,Spring會拋出MethodArgumentTypeMismatchException異常。

但這并不意味著后端可以完全依賴于這種自動類型轉換和異常處理來進行數據校驗。因為用戶可能繞過前端校驗直接向后端發送請求。因此,后端需要進行數據校驗以確保接收到的數據是合法和安全的。

//校驗訂單總價輸入的必須是正整數或者正小數類型
Class<PurchaseOrder> purchaseOrderClass = PurchaseOrder.class;
Field totalPriceField = purchaseOrderClass.getDeclaredField("totalPrice");
Class<?> type = totalPriceField.getType();
if (!(type.equals(Integer.class) || type.equals(Double.class))){throw new CustomException("-1","訂單總價請輸入正整數或者小數數字");
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/43817.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/43817.shtml
英文地址,請注明出處:http://en.pswp.cn/web/43817.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SpringSecurity中文文檔(Servlet Authorize HttpServletRequests)

Authorize HttpServletRequests SpringSecurity 允許您在請求級別對授權進行建模。例如&#xff0c;對于 Spring Security&#xff0c;可以說/admin 下的所有頁面都需要一個權限&#xff0c;而其他所有頁面只需要身份驗證。 默認情況下&#xff0c;SpringSecurity 要求對每個…

Umi.js 項目中使用 Web Worker

1.配置 Umi.js 在 Umi.js 中&#xff0c;需要通過配置來擴展 Webpack 的功能。在項目根目錄下修改 config/config.ts 文件&#xff1a; export default defineConfig({chainWebpack(config) {config.module.rule(worker).test(/\.worker\.ts$/).use(worker-loader).loader(wo…

C語言之指針的奧秘(二)

一、數組名的理解 int arr[10]{1,2,3,4,5,6,7,8,9,10}; int *p&arr[0]; 這里使用 &arr[0] 的?式拿到了數組第?個元素的地址&#xff0c;但是其實數組名本來就是地址&#xff0c;而且是數組首元素的地址。如下&#xff1a; 我們發現數組名和數組?元素的地址打印出…

重要文件放u盤還是硬盤?硬盤和u盤哪個適合長期存儲

在數字時代&#xff0c;我們每天都會處理大量的文件。其中&#xff0c;不乏一些對我們而言至關重要的文件&#xff0c;如家庭照片、工作文檔、財務記錄等。面對這些重要文件的存儲問題&#xff0c;我們通常會面臨&#xff1a;“重要文件放U盤還是硬盤”、“硬盤和U盤哪個適合長…

Vue2打包部署后動態修改后端接口地址的解決方法

文章目錄 前言一、背景二、解決方法1.在public文件夾下創建config文件夾&#xff0c;并創建config.js文件2.編寫config.js內容3.在index.html中加載config.js4.在封裝axios工具類的js中修改配置 總結 前言 本篇文章將介紹使用Vue2開發前后端分離項目時&#xff0c;前端打包部署…

系統架構師考點--系統安全

大家好。今天我來總結一下系統安全相關的考點&#xff0c;這類考點每年都會考到&#xff0c;一般是在上午場客觀題&#xff0c;占2-4分。 一、信息安全基礎知識 信息安全包括5個基本要素&#xff1a;機密性、完整性、可用性、可控性與可審查性 (1)機密性&#xff1a;確保信息…

Navicat導入sql文件

文章目錄 Navicat導入SQL文件&#xff0c;使用默認導入&#xff0c;不做任何修改報錯嘗試一修改運行時的選擇 嘗試二修改my.ini的配置文件 Navicat導入SQL文件&#xff0c;使用默認導入&#xff0c;不做任何修改報錯 嘗試一 修改運行時的選擇 取消勾選 ‘每個運行中運行多重查…

C++ 判斷語句的深入解析

C++ 判斷語句的深入解析 C++ 是一種廣泛使用的編程語言,以其高效性和靈活性著稱。在 C++ 中,判斷語句是控制程序流程的關鍵組成部分,它們允許程序根據不同的條件執行不同的代碼路徑。本文將深入探討 C++ 中的判斷語句,包括 if、else if、else 以及 switch 語句,并展示如何…

3,區塊鏈加密(react+區塊鏈實戰)

3&#xff0c;區塊鏈加密&#xff08;react區塊鏈實戰&#xff09; 3.1 哈希3.2 pow-pos-dpos3.3非對稱加密&#xff08;1&#xff09;對稱加密AES&#xff08;2&#xff09;非對稱加密RSA 3.4 拜占庭將軍3.5 P2P網絡3.6 區塊鏈 3.1 哈希 密碼學&#xff0c;區塊鏈的技術名詞 …

在Spring Boot項目中集成單點登錄解決方案

在Spring Boot項目中集成單點登錄解決方案 大家好&#xff0c;我是微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01; 在現代的企業應用中&#xff0c;單點登錄&#xff08;Single Sign-On, SSO&#xff09;解決方案是確保用戶…

【Git的基本操作】版本回退 | 撤銷修改的三種情況 | 刪除文件

目錄 5.版本回退 5.1選項hard&后悔藥 5.2后悔藥&commit id 5.3版本回退的原理 6.撤銷修改 6.1情況一 6.2情況二 6.3情況三 ?7.刪除文件 Git重要能力之一馬&#xff0c;版本回退功能。Git是版本控制系統&#xff0c;能夠管理文件歷史版本。本篇以ReadMe文件為…

神器!3個免費PPT成品網站推薦+3款AIPPT工具盤點!

熬夜加班做PPT卻沒有頭緒&#xff1f;別再自己憋著想了&#xff01;現在凡事主打一個“抄作業”&#xff0c;想做ppt卻沒想法&#xff0c;可以去到ppt成品網站搜集PPT模板&#xff0c;或是使用時下流行的AI生成PPT工具&#xff0c;只需輸入PPT主題&#xff0c;即可快速生成一份…

全網最詳細的CRC講解即計算

CRC 循環冗余碼&#xff08;Cyclic Redundancy Code&#xff0c; CRC&#xff09;是一種用于校驗通信鏈路上數字傳輸準確性的計算方法&#xff08;通過某種數學運算來建立數據位和校驗位(CRC)的約定關系的&#xff09;。它是利用除法以及余數的原理來作錯誤偵測。 發送方: 使用…

客戶關系管理怎么做?這4個工具一定要會用!

在商海浮沉中&#xff0c;每一位企業家和銷售經理都深知&#xff0c;客戶是企業生存與發展的基石。但如何有效管理這些寶貴的資源&#xff0c;讓每一次互動都成為加深關系、促進成交的契機&#xff0c;卻是一門藝術加科學的結合體。今天&#xff0c;咱們就來聊聊客戶關系管理&a…

3SRB5016-ASEMI逆變箱專用3SRB5016

編輯&#xff1a;ll 3SRB5016-ASEMI逆變箱專用3SRB5016 型號&#xff1a;3SRB5016 品牌&#xff1a;ASEMI 封裝&#xff1a;SGBJ-5 批號&#xff1a;2024 現貨&#xff1a;50000 最大重復峰值反向電壓&#xff1a;1600V 最大正向平均整流電流(Vdss)&#xff1a;50A 功…

CNN -1 神經網絡-概述

CNN -1 神經網絡-概述 一:芯片科技發展介紹了解1> 芯片科技發展趨勢2> 芯片使用領域3> 芯片介紹1. 神經網絡芯片2. 神經網絡處理單元NPU(Neural Processing Unit)二:神經網絡1> 什么是神經網絡2> 神經元3> 人工神經網絡三:卷積神經網絡(CNN)入門講解一…

【Spring】springSecurity使用

一、基本配置 1. 引入依賴 在Spring Boot項目中&#xff0c;使用Spring Security首先需要引入相應的依賴。在pom.xml中添加spring-boot-starter-security依賴&#xff1a; <dependency> <groupId>org.springframework.boot</groupId> <artifactId>…

Kodcloud可道云安裝與一鍵發布上線實現遠程訪問詳細教程

文章目錄 1.前言2. Kodcloud網站搭建2.1. Kodcloud下載和安裝2.2 Kodcloud網頁測試 3. cpolar內網穿透的安裝和注冊4. 本地網頁發布4.1 Cpolar云端設置4.2 Cpolar本地設置 5. 公網訪問測試6.結語 1.前言 本文主要為大家介紹一款國人自研的在線Web文件管理器可道云&#xff0c;…

唐劉:當 SaaS 愛上 TiDB(一)- 行業挑戰與 TiDB 的應對之道

導讀 在 TiDB 8.1 發布后&#xff0c;TiDB 展現了強大的支持 SaaS 業務的能力&#xff0c;成為 SaaS 業務數據庫的優先選擇之一。 本文為“當 SaaS 愛上 TiDB”系列文章的第一篇&#xff0c;系列文章將從技術原理和真實用戶體驗兩個角度深入探討 TiDB 在 SaaS 業務中的表現&a…

qt gridlayout 應用舉例

Qt的GridLayout是一種非常有用的布局管理器&#xff0c;它允許你在一個網格中放置控件&#xff0c;這樣你就可以創建出結構清晰、布局整齊的用戶界面。下面是一個使用GridLayout的簡單例子&#xff0c;展示了如何在一個窗口中放置幾個按鈕。 #include <QApplication> …