vue項目是基於element框架做的,在做form表單時,要做些驗證,element框架也提供了自定義驗證
下面是一些常見的驗證
只允許輸入數字:
可以直接用框架的rule去驗證,但必須在model后加上number
<el-form-item label="姓名:"> <el-input v-model.number="num"></el-input> </el-form-item> num: [ {required: true, message: '請輸入數量'}, {type: 'number', message: '數量必須為數字值'} ],
只允許輸入數字和小數:
<el-input v-model="items.volume" oninput="value=value.replace(/[^\d.]/g,'')"></el-input>
過濾中文:
<el-input v-model="form.trailer.so_no" oninput="value=value.replace(/[\u4e00-\u9fa5]/g, '')"></el-input>
補充:
由於使用了<el-form>組件,添加了rules驗證規則,導致與oninput事件的驗證規則發生了沖突,所以修改如下
<el-input v-model="form.trailer.so_no" oninput="value=value.replace(/[\u4e00-\u9fa5]/g, '')" @change="deal(index,indexs,$event,'volume')"></el-input>
deal(index,indexs,value,prop){ this.form.sark_type[index].child[indexs][prop]=value },
對當前屬性重新賦值,也可以把oninput事件的驗證移到change事件,不過這樣驗證只能在失焦的時候觸發
ps:由於屬性層級較多,包含了多層數組,通過element自定義驗證去做,要逐層拆屬性,着實有點麻煩。