使用el form表單驗證時,使用自定義的驗證方式,如下
el.rule = { required: false, validator: funCheck, trigger: 'change' };,只有當required值為true時才能觸發funCheck方法,當required為false時觸發不了,應該怎么設定才能在required值為false時也能觸發自定義的funCheck方法呢?
uj5u.com熱心網友回復:
你確定是required的值影響自定義校驗方法觸不觸發嗎,還是trigger的問題,要校驗的值是否發生了change?另外:
這個問題還是去前端模塊提問比較好些。
uj5u.com熱心網友回復:
我都試了 要校驗的值發生改變時只有 required為true時才會觸發,不是trigger的問題uj5u.com熱心網友回復:
你好,可以將trigger: 'change'改為trigger: 'blur'試試,還有你自定義的檢驗方法是什么,可以發出來看看,是不是自定義校驗方法的問題uj5u.com熱心網友回復:
required的意思就是是否需要校驗.........設定false還怎么校驗uj5u.com熱心網友回復:
你確定?
不是欄位必須的意思嗎?
uj5u.com熱心網友回復:
首先欄位都可以不填了還要什么檢驗的必要,其次如果可以不填做校驗,組件會多做很多沒必要的判斷。required可以配置在dom上,也可以寫在rule里面,dom上優先級高。不配置這個屬性表單不進行校驗。
uj5u.com熱心網友回復:
required的意思就是是否需要校驗.........設定false還怎么校驗
你確定?
不是欄位必須的意思嗎?
首先欄位都可以不填了還要什么檢驗的必要,其次如果可以不填做校驗,組件會多做很多沒必要的判斷。required可以配置在dom上,也可以寫在rule里面,dom上優先級高。不配置這個屬性表單不進行校驗。
uj5u.com熱心網友回復:
你好,可以將trigger: 'change'改為trigger: 'blur'試試,還有你自定義的檢驗方法是什么,可以發出來看看,是不是自定義校驗方法的問題
function funCheck(rule, value, callback) {
var reg = /0\d{2,3}-\d{7,8}/;
if (value) {
if (!reg.test(value)) {
return callback(new Error('請檢查固定電話格式'));
}
} else {
if (rule.required) {
return callback(new Error('固定電話不能為空'));
}
}
return callback();
}
uj5u.com熱心網友回復:
改為blur也是觸發不了,底下是我的自定義方法 你好,可以將trigger: 'change'改為trigger: 'blur'試試,還有你自定義的檢驗方法是什么,可以發出來看看,是不是自定義校驗方法的問題
function funCheck(rule, value, callback) {
var reg = /0\d{2,3}-\d{7,8}/;
if (value) {
if (!reg.test(value)) {
return callback(new Error('請檢查固定電話格式'));
}
} else {
if (rule.required) {
return callback(new Error('固定電話不能為空'));
}
}
return callback();
}
動態改變rule的required屬性值,當輸入值以后改變required: true, 清空之后改變回false,這樣就可以做到不輸入不校驗輸入才校驗。
uj5u.com熱心網友回復:
data() {
return {
rules: {
// 默認設定不校驗
phone: [{
required: false, validator: funCheck, trigger: 'blur'
}]
}
}
},
watch:
{
// 監聽是否輸入電話
'ruleForm.phone'(val){
if (val) {
// 輸入值以后開啟校驗
this.$set(this.rules, 'phone', [{
required: true, validator: funCheck, trigger: 'blur'
}])
} else {
// 清空以后恢復為不校驗
this.$set(this.rules, 'phone', [{
required: false, validator: funCheck, trigger: 'blur'
}])
}
}
},
uj5u.com熱心網友回復:
let funCheck=(rule, value, callback) => {if(value != "" && value != null){
if((/0\d{2,3}-\d{7,8}/).test(value) == false){
callback(new Error("請檢查固定電話格式"));
}else{
callback();
}
}else{
callback();
}
};
驗證號碼010-54646464 010-8656444都正常,你可以再試試
你的固話不是必填項,所以你那個不能為空的判斷沒有必要加
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/7592.html
標籤:JavaScript
下一篇:被跨域整瘋的公司練習生,求幫
