Vue 두 필드 의 암호 수정 기능 구현
『8195』본 고 는 전문 인《Vue Element-ui 폼 검사 규칙,어떤 것 을 알 고 있 습 니까??》이다.다 중 필드 연합 검사 의 전형 적 인 응용
*8195:8195:비밀 번 호 를 수정 할 때 보통 두 번 의 비밀번호 가 일치 하 는 지 확인 하고 2 개의 속성 필드 와 관련된다.2 개의 속성 필드 와 유사 한 경우:
4.567917.날짜 시간 범위,둘 다 값 이 있 으 면 종료 시간>=시작 시간 을 요구 합 니 다수량 관계:수량 하한 선<=수량 상한 선『8195』는 두 속성 치가 모두 가 변 적 인 것 이 특징 이다.본 고 는 두 번 의 암호 의 일치 성 응용 을 검증 하여 가 변 속성 값 의 필드 간 의 공동 검증 의 전형 적 인 해결 방안 을 제시 하고 자 한다.
2.방안 실현
2.1 실현 코드
『8195』먼저 폼 의 코드 를 드 립 니 다.
<template>
<div id="contentwrapper">
<h5 class="heading" align=left> / </h5>
<!-- -->
<el-divider></el-divider>
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form-item label=" :" prop="oldPasswd">
<el-input v-model="form.oldPasswd" :type="password">
<!-- input slot="suffix" , -->
<i slot="suffix" :class="icon" @click="showPassword"></i>
</el-input>
</el-form-item>
<el-form-item label=" :" prop="newPasswd">
<el-input v-model="form.newPasswd" :type="password">
<i slot="suffix" :class="icon" @click="showPassword"></i>
</el-input>
</el-form-item>
<el-form-item label=" :" prop="confirmPasswd">
<el-input v-model="form.confirmPasswd" :type="password">
<i slot="suffix" :class="icon" @click="showPassword"></i>
</el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" style="width:160px" size="small" @click="submit()"> </el-button>
<el-button type="primary" style="width:160px" size="small" @click="cancel()"> </el-button>
</el-form-item>
</el-form>
</div>
</template>
<script>
import {passwordValidator} from '@/common/validator.js'
export default {
data() {
//
const comparePasswdValidator = (rule, value, callback) =>{
//
var getvaluesMethod = rule.getValuesMethod;
// getvaluesMethod ,
var formData = getvaluesMethod();
// , ,
if (formData.newPasswd == '' || formData.confirmPasswd == ''){
return callback();
}
// ===========================================================
//
// ,
if (formData.newPasswd == formData.confirmPasswd){
//
// ,
this.$refs['form'].clearValidate(['newPasswd','confirmPasswd']);
callback();
}else{
callback(new Error(' '));
}
}
return {
form : {
oldPasswd : '',
newPasswd : '',
confirmPasswd : ''
},
// Input
password:"password",
// Input
icon:"el-input__icon el-icon-view",
//
rules: {
oldPasswd : [
{required: true, message: " ", trigger: 'blur'}
],
newPasswd : [
{required: true, message: " ", trigger: 'blur'},
{min: 6, max: 18, message: " 6-18 ", trigger: 'blur'},
{validator: passwordValidator, trigger: 'blur'},
{validator: comparePasswdValidator,trigger: 'blur','getValuesMethod':this.getValuesMethod},
],
confirmPasswd : [
{required: true, message: " ", trigger: 'blur'},
{min: 6, max: 18, message: " 6-18 ", trigger: 'blur'},
{validator: passwordValidator, trigger: 'blur'},
{validator: comparePasswdValidator,trigger: 'blur','getValuesMethod':this.getValuesMethod},
],
},
}
},
methods: {
// ,
getValuesMethod(){
return this.form;
},
//
showPassword(){
//
if( this.password=="text"){
this.password="password";
//
this.icon="el-input__icon el-icon-view";
}else {
this.password="text";
this.icon="el-input__icon el-icon-stopwatch";
}
},
//
submit(){
let _this = this;
this.$refs['form'].validate(valid => {
// true, false
if (valid) {
_this.instance.changePasswd(_this.$baseUrl,_this.form).then(res => {
if (res.data.code == _this.global.SucessRequstCode){
//
alert(" !");
//
this.$router.push({
path: '/home',
});
}else{
if (!_this.commonFuncs.isInterceptorCode(res.data.code)){
alert(res.data.message);
}
}
}).catch(error => {
console.log(error);
});
}
})
},
//
cancel(){
//
this.$router.push({
path: '/home',
});
}
}
}
</script>
가 져 온 외부 검사 기 passwordValidator 는/src/common/validator.js 파일 에서 코드 는 다음 과 같 습 니 다.
/* */
export function passwordValidator(rule, value, callback) {
const reg =/^[_a-zA-Z0-9@.#%&*!\-\$^]+$/;
if(value == '' || value == undefined || value == null){
callback();
} else {
if (!reg.test(value)){
callback(new Error(' 、 :@.#%&*!_-$^'));
} else {
callback();
}
}
}
2.2 코드 설명2.2.1 규칙 설정:
//
rules: {
oldPasswd : [
{required: true, message: " ", trigger: 'blur'}
],
newPasswd : [
{required: true, message: " ", trigger: 'blur'},
{min: 6, max: 18, message: " 6-18 ", trigger: 'blur'},
{validator: passwordValidator, trigger: 'blur'},
{validator: comparePasswdValidator,trigger: 'blur','getValuesMethod':this.getValuesMethod},
],
confirmPasswd : [
{required: true, message: " ", trigger: 'blur'},
{min: 6, max: 18, message: " 6-18 ", trigger: 'blur'},
{validator: passwordValidator, trigger: 'blur'},
{validator: comparePasswdValidator,trigger: 'blur','getValuesMethod':this.getValuesMethod},
],
},
*8195°중점 은 new Passwd 와 confirm Passwd 속성 입 니 다.두 개 는 같은 규칙 집합 을 설정 하고 검사 규칙 은 모두 다음 과 같 습 니 다.*8195°검사 규칙 에서 new Passwd 와 confirm Passwd 속성 은 모두 같은 copare Passwd Validator 를 설정 합 니 다.두 필드 의 속성 값 이 모두 가 변 적 이기 때 문 입 니 다.compare Passwd Validator 는 규칙 의 마지막 줄 에 있 습 니 다.즉,앞의 검사 규칙 을 먼저 만족 시 켜 야 합 니 다.
2.2.2 getValuesMethod 방법
// ,
getValuesMethod(){
return this.form;
},
『8195』getValuesMethod 방법 으로 data 의 form 데이터 대상 을 되 돌려 줍 니 다.이것 은 매우 날 카 로 운 조작 으로 전체 데이터 프로 브 를 제공 하 는 것 과 같 습 니 다.검사 기 에서 data 의 form 데이터 대상 을 방문 할 수 있 고 form 의 v-modal 모델 로 인해 데이터 의 실시 성 을 확보 할 수 있 습 니 다.즉,다른 속성 을 얻 지 못 할 까 봐 걱정 하지 않 아 도 됩 니 다.getValues Method 방법 은 데이터 바 인 딩 의 다른 방향 을 제공 합 니 다.2.2.3 compare PasswdValidator 검사 기
//
const comparePasswdValidator = (rule, value, callback) =>{
//
var getvaluesMethod = rule.getValuesMethod;
// getvaluesMethod ,
var formData = getvaluesMethod();
// , ,
if (formData.newPasswd == '' || formData.confirmPasswd == ''){
return callback();
}
// ===========================================================
//
// ,
if (formData.newPasswd == formData.confirmPasswd){
//
// ,
this.$refs['form'].clearValidate(['newPasswd','confirmPasswd']);
callback();
}else{
callback(new Error(' '));
}
}
설정 한 사용자 정의 규칙 속성'getValuesMethod'는 this.getValuesMethod 를 가리 키 는 방법 이기 때문에 이 속성 은 방법 으로 호출 할 수 있 습 니 다.
//
var getvaluesMethod = rule.getValuesMethod;
// getvaluesMethod ,
var formData = getvaluesMethod();
『8195』방법 속성의 호출 결 과 는 this.form 을 가리 키 는 데이터 대상 을 되 돌려 주 므 로 이 대상 의 속성 을 마음대로 방문 할 수 있 습 니 다.『8195』는 두 가 지 를 비교 하기 전에 한 사람 이 비어 있 는 것 을 발견 하면 돌아온다.현재 속성 입력 값 이후 엔 드 속성 에 입력 값 이 없 을 수 있 으 므 로 비교 해 서 는 안 됩 니 다.
// , ,
if (formData.newPasswd == '' || formData.confirmPasswd == ''){
return callback();
}
두 번 의 비밀번호 비교:
// ===========================================================
//
// ,
if (formData.newPasswd == formData.confirmPasswd){
//
// ,
this.$refs['form'].clearValidate(['newPasswd','confirmPasswd']);
callback();
}else{
callback(new Error(' '));
}
두 번 의 비밀 번 호 를 비교 하고 두 개의 비밀번호 가 일치 하면 경고 알림 을 출력 합 니 다.일치 하면 먼저 엔 드 에 대한 경고 알림 을 삭제 해 야 합 니 다.이때 엔 드 에'두 번 의 비밀번호 가 일치 하지 않 습 니 다'라 는 알림 이 있 을 수 있 기 때 문 입 니 다.
// ,
this.$refs['form'].clearValidate(['newPasswd','confirmPasswd']);
8195,8195,clearValidate 방법 은 element-form 의 방법 으로 하나 이상 의 검사 규칙 속성 에 대한 이상 알림 을 제거 하 는 역할 을 합 니 다.이때'오 살'상황 이 발생 할 수 있 습 니까?즉,제거 작업 은 엔 드 에 대한 다른 이상 알림 도 제거 합 니 다.이때 두 번 의 암호 가 같 고 두 번 의 검사 규칙 이 같다 는 것 을 감안 하면 이 검사 규칙 은 마지막 에 있 기 때문에 검 측 순서 로 볼 때 마지막 으로 실 행 된 것 입 니 다.즉,본 검사 기 를 실 행 했 을 때 다른 검 사 는 모두 통과 되 었 습 니 다.따라서 이런'오 살'은 일어나 지 않 는 다.실제 집행 효과 도 마찬가지다.
또한 주의해 야 할 것 은 위의 clearValidate 호출 문 구 를 다음 코드 로 대체 할 수 없습니다.
//
if (rule.field == 'newPasswd')
{
// newPasswd
this.$refs['form'].validateField('confirmPasswd');
}else{
this.$refs['form'].validateField('newPasswd');
}
*8195:이 때 검 사 를 실행 하고 있 습 니 다.다시 엔 드 검 사 를 호출 하면 엔 드 에 compare Passwd Validator 를 호출 할 수 있 습 니 다.엔 드 검사 결과 두 번 의 암호 가 일치 하 는 것 을 발견 하면 엔 드(엔 드 의 엔 드,즉 자체)검 사 를 다시 호출 하여 순환 하여 스 택 을 호출 합 니 다.따라서 검사 기 코드 에 서 는 vaidate Field 방법 을 사용 하지 않도록 합 니 다.2.3 효과 검증
『8195』아래 는 효과 그림 입 니 다.
초기 상태:
비밀 번 호 를 수정 하고 입력 초점 에서 벗 어 납 니 다.
새 암호 입력 상자 에 들 어가 서 입력 하지 않 고 입력 초점 에서 벗 어 납 니 다.
*8195:비밀 번 호 를 확인 하고 끝 에 있 는 문자'8'을 삭제 하 며 입력 초점 에서 벗 어 났 습 니 다.이때 다시 초기 상태 로 돌 아 왔 습 니 다.
Vue 두 필드 의 공동 검증 전형 적 인 예 인 비밀번호 수정 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 Vue 비밀번호 수정 내용 은 저희 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Vue Render 함수로 DOM 노드 코드 인스턴스 만들기render에서createElement 함수를 사용하여 DOM 노드를 만드는 것은 직관적이지 않지만 일부 독립 구성 요소의 디자인에서 특수한 수요를 충족시킬 수 있습니다.간단한 렌더링 예는 다음과 같습니다. 또한 v...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.