element vue validate驗證名稱重復(fù) 輸入框與后臺重復(fù)驗證 特殊字符 字符長度 及注意事項小結(jié)【實例代碼】
具體代碼如下所示:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" rel="external nofollow" >
</head>
<body >
<div id="app">
<!--此處model的abc 要是下面input 綁定的對象名稱, ref 要和提交按鈕的submit參數(shù) 名稱要一致-->
<el-form size="mini" :model="abc" ref="validateRef">
<!--此處的prop 和input 中abc的屬性名稱一致 -->
<el-form-item label="你好" prop="hello" :rules="[{required: true,message:'請輸入',trigger:'blur'}
,{validator:validateCharacter,trigger:'blur'}
,{validator:validateFontSize,trigger:'blur'}
,{validator:validatePass,trigger:'blur'}]">
<el-input type="text" v-model="abc.hello" placeholder="請輸入..." clearable></el-input>
</el-form-item>
</el-form>
<el-button @click="submit('validateRef')" type="primary" :loading="submitLoading">提交</el-button>
</div>
<!-- import Vue before Element -->
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<!-- import JavaScript -->
<script src="https://unpkg.com/element-ui/lib/index.js"></script>
<script>
var context=[[${#request.getContextPath()}]];
var ArrayMap = new Vue({
el: '#app',
data: function () {
return {
abc: {
hello: '',
},
submitLoading:false,
}
},
methods: {
//特殊字符過濾
checkSpecificKey(str) {
var specialKey = "[`~!#$^&*()=|{}':;',\\[\\].<>/?~!#¥……&*()——|{}【】‘;:”“'。,、?]‘'";
for (var i = 0; i < str.length; i++) {
if (specialKey.indexOf(str.substr(i, 1)) != -1) {
return false;
}
}
return true;
},
//驗證字符串
validatePass(rule,value,callback){
var that=this;
$.ajax({
url:context+"/abc?name="+that.abc.hello,
type:"GET",
async:false,
dataType:"json",
contentType:"application/json;charset=UTF-8",
data:{}
}).done(function(resp){
if(resp.data.isTrue){
callback();
}else{
callback(new Error("名稱重復(fù),請重新輸入"))
}
})
},
//驗證字符串
validateFontSize(rule,value,callback){
if(value.length<30){
callback();
}else{
callback(new Error("字符串長度在1-30之間"))
}
},
//驗證字符串
validateCharacter(rule,value,callback){
if(this.checkSpecificKey(value)){
callback();
}else{
callback(new Error('請不要輸入特殊字符:[`~!#$^&*()=|{}\':;\',\\[\\].<>/?~!#¥……&*()——|{}【】‘;:”“\'。,、?]‘\''))
}
},
submit(data) {
this.submitLoading=true,
this.$refs[data].validate((valid) => {
if (valid) {
//驗證成功,提交
return true;
} else {
//驗證失敗返回
return false;
}
;
})
},
},
})
</script>
</body>
</html>
下面看下vue-element 輸入框驗證
1.控制輸入位數(shù)
限制輸入為10位,這種方式可以使輸入框中輸入10位后不能輸入后續(xù)內(nèi)容
因為number輸入框自動將最后一位小數(shù)點忽略不計,因此“.”,"2.","3.3."這三種情況均為正確的輸入
<el-form-item label="渠道:" prop="channelName">
<el-input v-model="formData.channelName" :maxlength="10" placeholder="請輸入渠道名稱"></el-input>
</el-form-item>
rules:{
channelName:[
{required:true,message:'渠道名稱不能為空',trigger:'change'},
],
}
2.控制小數(shù)輸入位數(shù)
input 設(shè)置類型為number,step控制步長,正則表達(dá)式匹配輸入的格式必須為xxx.xxx.
注意,此種方法無法區(qū)分不輸入的情況,故將提示信息合并為一個。
統(tǒng)一觸發(fā)方式為change
<el-form-item label="短信單價:" prop="price" class="form-price">
<el-input type="number" step="0.001" v-model="formData.price" placeholder="請輸入"></el-input>
</el-form-item>
//js
let checkPrice = (rule,value,callback)=>{
if(value){
let rgx = /^\d+(\.\d{1,3})?$/;
if(value.match(rgx)==null){
return callback(new Error('請檢查輸入格式,不能為空,且最多三位小數(shù)'))
}else{
callback();
}
}
};
rules:{
price:[
{required:true,message:'請檢查輸入格式,不能為空,且最多三位小數(shù)',trigger:'change'},
{validator:checkPrice,trigger:'change'}
]
},
3.驗證時間控件選擇的時間是否在某個范圍
let checkSendTime = (rule, value, callback) => {
let hour = value ? value.getHours() :0;
if (value !== "") {
if (hour < 8 || hour > 21) {
return callback(new Error('請選擇8:00~22:00之間發(fā)送'));
} else {
callback();
}
}
};
sendTime:[
{type:'date',required: true, message: '發(fā)送時間不能為空', trigger: 'blur'},
{validator:checkSendTime,trigger:'blur'}
]
總結(jié)
以上所述是小編給大家介紹的element vue validate驗證名稱重復(fù) 輸入框與后臺重復(fù)驗證 特殊字符 字符長度 及注意事項小結(jié)【實例代碼】,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
axios請求中以params或body形式傳遞參數(shù)的區(qū)別淺析
最近在做自己項目中,做一個非常簡單的新增用戶場景,但是使用原生axios發(fā)送post請求的時候,還是踩了不少坑的,下面這篇文章主要給大家介紹了關(guān)于axios請求中以params或body形式傳遞參數(shù)的區(qū)別的相關(guān)資料,需要的朋友可以參考下2023-04-04
Element?el-date-picker?日期選擇器的使用
本文主要介紹了Element?el-date-picker?日期選擇器的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04
vue+element實現(xiàn)下拉菜單并帶本地搜索功能示例詳解
這篇文章主要介紹了vue+element實現(xiàn)下拉菜單并帶本地搜索功能,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-09-09
Vue實現(xiàn)動態(tài)創(chuàng)建和刪除數(shù)據(jù)的方法
下面小編就為大家分享一篇Vue實現(xiàn)動態(tài)創(chuàng)建和刪除數(shù)據(jù)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-03-03
Vite?Vue3?EsLint?Prettier配置步驟極簡方法詳解
這篇文章主要為大家介紹了Vite?Vue3?EsLint?Prettier配置步驟的極簡方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09
Vue.js實現(xiàn)數(shù)據(jù)雙向綁定的代碼示例
在我們使用vue的時候,當(dāng)數(shù)據(jù)發(fā)生了改變,界面也會跟著更新,但這并不是理所當(dāng)然的,我們修改數(shù)據(jù)的時候vue是如何監(jiān)聽數(shù)據(jù)的改變以及當(dāng)數(shù)據(jù)發(fā)生改變的時候vue如何讓界面刷新的,所以本文就給大家講講Vue.js 數(shù)據(jù)雙向綁定是如何實現(xiàn)的2023-07-07

