<!-- 需要一個動態的input 可以讓用戶根據不同資料填寫, -->
<!-- useCustom 是一個動態數組里面 a, b, c, -->
<div v-for="(uc, index) in useCustom" :key="index">
<el-form-item >
<!-- msgShopName是個對象, 通過拿到uc值 來動態渲染出input框 a框, b框, c框-->
<el-input v-model="msgForm.msgShopName[uc]" :placeholder="uc" style="margin-left: 4px; width: 200px" required></el-input>
</el-form-item>
</div>我的需求很簡單, 為每個動態渲染出來的 input 增加驗證,讓他變成必填...1.簡單試過在input 框上 直接寫上required, 來讓input框變成必填, 結果無效. 2.試過直接增加rules 規則. 不過效果不好,驗證不準確.我遇到的問題是: prop 一般要與 被驗證的控件 一致, 但我這邊因為 被驗證的控件msgShopName是不固定的,讓prop不能與msgShopName保持一致.變成無法控制到.問題出現的環境背景及自己嘗試過哪些方法相關代碼// 請把代碼文本粘貼到下方(請勿用圖片代替代碼)你期待的結果是什么?實際看到的錯誤信息又是什么?
1 回答

MYYA
TA貢獻1868條經驗 獲得超4個贊
看你代碼 useCustom
循環出來的uc
不就是對象的屬性名嗎?提前配置好全部rules
,直接把uc
給el-form-item
當作prop
不行嗎?
或者也可以比較傻的直接把rules
定義在循環中的el-form-item
上
<el-form-item prop="email" label="郵箱" :rules="[ { required: true, message: '請輸入郵箱地址', trigger: 'blur' }, { type: 'email', message: '請輸入正確的郵箱地址', trigger: ['blur', 'change'] } ]" >
剛抽空按你邏輯寫了段測試代碼,是可行的,能正常驗證
template
<el-form :model="msgForm.msgShopName"> <div v-for="(uc, index) in useCustom" :key="index"> <el-form-item :prop="uc" :rules="[ { required: true, trigger: 'blur' } ]"> <!-- msgShopName是個對象, 通過拿到uc值 來動態渲染出input框 a框, b框, c框--> <el-input v-model="msgForm.msgShopName[uc]" :placeholder="uc" style="margin-left: 4px; width: 200px"></el-input> </el-form-item> </div></el-form>
script
export default { data() { return { useCustom: ['name', 'mobile'], msgForm: { msgShopName: {} }, } } }
添加回答
舉報
0/150
提交
取消