uniapp動態循環表單校驗失敗:初始值校驗

問題現象 💥

在實現動態增減的單價輸入表單時(基于uv-form組件),遇到以下詭異現象:

  • <uv-input>的v-model綁定初始值為數字類型時,required規則失效 ?
  • 數字類型與字符串類型校驗表現不一致 🔢

技術棧背景 🛠?

  • 框架:Vue3 + uni-app
  • UI庫:uv-ui
  • 校驗方案:計算屬性動態生成規則

示意圖 🔍

在這里插入圖片描述

解決方案 🚀

1.優先使用字符串類型做表單綁定
2.添加自定義校驗規則(validator)解決初始值問題

<template><view class="form-box"><uv-form ref="refForm" :model="formvalue" labelWidth="100px" :rules="rules"><view class="form-list-item" v-for="(item, index) in formvalue.detailList" :key="index"><uv-form-item borderBottom label="單價" :prop="`detailList.${index}.amount`" required><uv-input inputAlign="right" type="digit" v-model="item.amount" placeholder="請輸入單價" border="none"><template v-slot:suffix></template></uv-input></uv-form-item><view class="mt24" v-if="formvalue.detailList.length != 1"><uv-button plain text="移除"@click.stop="handleDel(index)" :customStyle="{ height: '60rpx' }"></uv-button></view></view></uv-form><view class="page-footer"><uv-button plain text="新增" @click.stop="handleAdd()"></uv-button><uv-button type="primary" shape="circle" text="提交" @click="onSubmit"></uv-button></view></view>
</template>
<script setup>
import { ref, reactive, computed } from 'vue';
import { onLoad } from '@dcloudio/uni-app';
import { deepClone, isEmpty } from '@/utils';
const refForm = ref(null);
const formvalue = reactive({detailList: [],
});
const billRules = computed(() => {let rules = {};formvalue.detailList.forEach((item, index) => {rules[`detailList.${index}.amount`] = [{required: true,message: '請輸入有效的單價',trigger: ['blur', 'change'],validator: (rule, value) => {// 強制轉換為字符串校驗if (isEmpty(value?.toString())) return false; const numValue = Number(value);return !isNaN(numValue) && numValue > 0;}}];})return rules
});
const rules = computed(() => {return {...billRules.value}
});
const detailObj = {amount: 10,
}
const handleAdd = () => {formvalue.detailList.push(deepClone(detailObj))
}
const handleDel = (index) => {formvalue.detailList.splice(index, 1)
}
onLoad(async () => {handleAdd()
})
const onSubmit = async () => {refForm.value.validate().then(async () => {})
}   
</script>
<style lang="scss" scoped>
.form-box {margin-top: 180rpx;
}.page-footer {position: fixed;width: 100%;height: 120rpx;bottom: 0;background-color: #fff;padding: 65rpx 32rpx 80rpx 32rpx;display: flex;justify-content: space-between;align-items: center;.uv-button-box {flex: 1;margin: 0 12rpx;}
}
</style>

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

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

相關文章

UML 圖六種箭頭含義詳解:泛化、實現、依賴、關聯、聚合、組合

目錄 一、泛化&#xff08;Generalization&#xff09; 概念 表示方法 二、實現&#xff08;Realization&#xff09; 概念 表示方法 三、依賴&#xff08;Dependency&#xff09; 概念 表示方法 四、關聯&#xff08;Association&#xff09; 概念 表示方法 五、…

Android Logcat總結

文章目錄 Android Logcat總結日志格式過濾日志正向過濾反向過濾正則過濾日志等級 Android Logcat總結 日志格式 用法&#xff1a; Log.e("TAG", "hello") Log.i("TAG", "hello") Log.d("TAG", "hello")依次為&…

Unity UGUI - 六大基礎組件

目錄 一、Canvas上 1. Canvas&#xff1a;復制渲染子UI控件 2. ?Canvas Scaler?&#xff1a;畫布分辨率自適應 3. Graphics Raycaster&#xff1a;射線事件響應 4. ?Rect Transform?&#xff1a;UI位置錨點對齊 二、Event System上 5. Event System 6. Standalone …

基于Springboot的網上訂餐系統 【源碼】+【PPT】+【開題報告】+【論文】

網上訂餐系統是一個基于Java語言和Spring Boot框架開發的Web應用&#xff0c;旨在為用戶和管理員提供一個便捷的訂餐平臺。該系統通過簡化餐飲訂購和管理流程&#xff0c;為用戶提供快速、高效的在線訂餐體驗&#xff0c;同時也為管理員提供完善的后臺管理功能&#xff0c;幫助…

css 實現閃爍光標

要實現閃爍光標&#xff08;比如文本輸入框內常見的閃爍效果&#xff09;&#xff0c;可以使用 CSS 動畫。下面是一個簡單的方法&#xff1a; 代碼示例 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta n…

從JVM底層揭開Java方法重載與重寫的面紗:原理、區別與高頻面試題突破

&#x1f31f;引言&#xff1a;一場由方法調用引發的"血案" 2018年&#xff0c;某電商平臺在"雙十一"大促期間遭遇嚴重系統故障。 技術團隊排查發現&#xff0c;問題根源竟是一個繼承體系中的方法重寫未被正確處理&#xff0c;導致訂單金額計算出現指數級…

詳解Spark executor

在 Apache Spark 中&#xff0c;Executor&#xff08;執行器&#xff09; 是運行在集群工作節點&#xff08;Worker Node&#xff09;上的進程&#xff0c;負責執行具體的計算任務并管理數據。它是 Spark 分布式計算的核心組件之一&#xff0c;直接決定了任務的并行度和資源利用…

適配器模式及其典型應用

引言 適配器模式&#xff08;Adapter Pattern&#xff09;是一種結構型設計模式&#xff0c;它允許不兼容的接口協同工作。適配器模式通過創建一個適配器類來轉換一個類的接口&#xff0c;使其能夠與另一個類的接口兼容。這種模式在實際開發中非常有用&#xff0c;特別是在需要…

如何在 Vue 項目中使用v - for指令進行列表渲染,如何優化其性能?

大白話如何在 Vue 項目中使用v - for指令進行列表渲染&#xff0c;如何優化其性能&#xff1f; 在Vue項目里&#xff0c;咱們常常會碰到要把一組數據渲染成列表的狀況。這時候&#xff0c;v-for指令就派上大用場啦&#xff01;它能讓咱們輕松地把數據數組里的每個元素渲染成對…

qt QQuaternion詳解

1. 概述 QQuaternion 是 Qt 中用于表示三維空間中旋轉的四元數類。它包含一個標量部分和一個三維向量部分&#xff0c;可以用來表示旋轉操作。四元數在計算機圖形學中廣泛用于平滑的旋轉和插值。 2. 重要方法 默認構造函數 QQuaternion::QQuaternion(); // 構造單位四元數 (1…

如何將爬取的評論數據存儲到數據庫?

在使用Python爬蟲獲取1688商品評論后&#xff0c;將這些數據存儲到數據庫中是一個常見的需求。這樣可以方便后續的數據分析、查詢和管理。本文將詳細介紹如何將爬取的評論數據存儲到數據庫中&#xff0c;包括MySQL和SQLite兩種常見的數據庫。 一、準備工作 1. 安裝必要的Pytho…

Maven中為什么有些依賴不用引入版本號

先給出一個例子&#xff1a; <parent><artifactId>sky-take-out</artifactId><groupId>com.sky</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>sky-s…

Nginx相關漏洞解析

一、CRLF注入漏洞 原理&#xff1a;Nginx將傳入的url進行解碼&#xff0c;對其中的%0a%0d替換成換行符&#xff0c;導致后面的數據注入至頭部&#xff0c;造成CRLF 注入漏洞 1、開環境 2、訪問網站&#xff0c;并抓包 3、構造請求頭 %0ASet-cookie:JSPSESSID%3D1 這樣就可以…

RUBY報告系統

我們常用GFP及其變體如RFP、YFP、mCherry等作為基因表達的報告蛋白——需要熒光顯微鏡制片觀察&#xff1b;此外還有GUS或熒光素酶作為報告酶——需要添加底物。 RUBY報告系統則與眾不同&#xff0c;其作用原理是&#xff1a;將酪氨酸轉化為鮮艷的紅色甜菜堿&#xff0c;無需使…

[力扣每日一練]關于MySQL和pandas的正則表達式應用

一&#xff1a;題目要求 表&#xff1a;Users-------------------------- | Column Name | Type | -------------------------- | user_id | int | | email | varchar | -------------------------- (user_id) 是這張表的唯一主鍵。 每一行包含用…

office_word中使用宏以及DeepSeek

前言 Word中可以利用DeepSeek來生成各種宏&#xff0c;從而生成我們需要各種數據和圖表&#xff0c;這樣可以大大減少我們手工的操作。 1、Office的版本 采用的是微軟的office2016&#xff0c;如下圖&#xff1a; 2、新建一個Word文檔 3、開啟開發工具 這樣菜單中的“開發工具…

深度學習框架PyTorch——從入門到精通(10)PyTorch張量簡介

這部分是 PyTorch介紹——YouTube系列的內容&#xff0c;每一節都對應一個youtube視頻。&#xff08;可能跟之前的有一定的重復&#xff09; 創建張量隨機張量和種子張量形狀張量數據類型 使用PyTorch張量進行數學與邏輯運算簡單介紹——張量廣播關于張量更多的數學操作原地修改…

Oracle 10G DG 修復從庫-磁盤空間爆滿導致從庫無法工作

一、背景 由于近期在做應用升級和系統改造&#xff0c;導致幾天沒怎么觀察DG庫的狀態。這幾天歸檔日志暴漲導致磁盤空間用盡&#xff0c;從庫無法接收主庫的歸檔日志&#xff0c;且從庫無法工作。經過檢查&#xff0c;發現從庫所需要的日志在主庫均存在。所以當前文檔使用歸檔…

【踩坑系列】使用httpclient調用第三方接口返回javax.net.ssl.SSLHandshakeException異常

1. 踩坑經歷 最近做了個需求&#xff0c;需要調用第三方接口獲取數據&#xff0c;在聯調時一直失敗&#xff0c;代碼拋出javax.net.ssl.SSLHandshakeException異常&#xff0c; 具體錯誤信息如下所示&#xff1a; javax.net.ssl.SSLHandshakeException: sun.security.validat…

算法基礎——模擬

目錄 1 多項式輸出 2.蛇形方陣 3.字符串的展開 模擬&#xff0c;顧名思義&#xff0c;就是題?讓你做什么你就做什么&#xff0c;考察的是將思路轉化成代碼的代碼能?。這類題?般較為簡單&#xff0c;屬于競賽??的簽到題&#xff08;但是&#xff0c;萬事?絕對&#xff…