vueフォーム検証
フォーム検証を整理します.インタフェースを通過します.手順は次のとおりです. 検証が必要なフォームにprop=「フィールド名」を追加します. 書く規則:
trigger=>は検証のトリガ方式を表し、blur、change、focusがあります.のよく使われるのはblurとchangeです.インタフェースで判断する必要がなければ、検証方法を直接書きます.すべての検証方法はdataに書きます.return外: インタフェースを歩く必要がある場合は、私のプロジェクトのように、名前とコードが唯一であることを保証するために、バックグラウンドインタフェースを歩いて判断します.また、私の検証は追加と編集のポップアップボックスにあるため、以下に2つの部分に分けます.ここではコントラストデータを検証する必要があります~まず、コントラストを行うフィールドを初期化し、return:
次に、名前とコードの検証を書きます(上記の検証方法と同じ場所にあります):
追加されたメソッド:
編集方法:提出 以上は検証過程全体であり、彼の経緯を中断して見たほうがいい.はっきりするだろう.もちろん、以上は参考までに、実際から出発します.
refとrulesに注意する必要があります.ModelのvalObjは、refのvalObjとバインドされたオブジェクトです.
data() { return { rules: ............. } }
の中に書く rules: {
name: [{ validator: validateParking, required: true, trigger: 'blur' } ],
code: [ { validator: validateParking, required: true, trigger: 'blur' } ],
truckCompany: { // -
id: [{ validator: companyCheck, required: true, trigger: 'change' }]
},
phone: [ { validator: phoneCheck, required: true, trigger: 'change' } ]
}
trigger=>は検証のトリガ方式を表し、blur、change、focusがあります.のよく使われるのはblurとchangeです.
data(){ var companyCheck = ... return{ }}
//
var companyCheck = (rule, value, callback) => {
if (value === 0 || value === '') {
callback(‘ ’)
} else {
callback()
}
}
//
var phoneCheck = (rule, value, callback) => {
if (!(/^1(3|4|5|7|8)\d{9}$/.test(value))) {
callback(' ')
} else {
callback()
}
}
//
validateParkingData: {
name: '',
code: ''
}
次に、名前とコードの検証を書きます(上記の検証方法と同じ場所にあります):
//
var validateParking = (rule, value, callback) => {
if (value === '') {
if (rule.field === 'name') {
callback(‘ ’)
} else if (rule.field === 'code') {
callback(‘ ’)
}
} else if (this.validateParkingData[rule.field] !== value) {
var postData = {}
postData[rule.field] = value
// isExistParking
isExistParking(postData).then(response => {
if (response.data) {
if (rule.field === 'name') {
callback(‘ ’)
} else if (rule.field === 'code') {
callback(‘ ’)
}
} else {
callback()
}
})
} else {
callback()
}
}
追加されたメソッド:
// :
add() {
// this.$nextTick() => DOM 。 , DOM
// this.nextTick(callback), , 。
// this.$nextTick(callback), dom , 。
this.$nextTick(() => {
if (this.$refs['valObj'] !== undefined) { // valObj
this.$refs['valObj'].resetFields() // valObj
}
})
this.validateParkingData['name'] = ''
this.validateParkingData['code'] = ''
}
編集方法:
//
edit(row) {
this.$nextTick(() => {
if (this.$refs['valObj'] !== undefined) {
this.$refs['valObj'].resetFields()
this.validateParkingData['name'] = row.name
this.validateParkingData['code'] = row.code
this.valObj = Object.assign({}, row) //
}
})
}
//
confirm() {
this.$refs['valObj'].validate(valid => {
if (valid) { // true
// confirmApi ,
confirmApi(this.valObj, this.type).then(response => {
console.log(response)
} else {
return false
}
})
}