JavaScript 정책 모드를 사용하여 양식 검증 방법
개요
웹 프로젝트에서 로그인, 등록 등 기능은 모두 폼 제출을 필요로 한다. 사용자의 데이터를 백그라운드에 제출하기 전에 전단은 일반적으로 할 수 있는 검사를 해야 한다. 예를 들어 기입 여부, 기입 길이, 비밀번호가 규범에 부합되는지 등이다. 전단 검사는 규범에 맞지 않는 폼 제출을 피할 수 있다.
만약 우리가 표를 가지고 있다면, 검증 논리는 다음과 같다.
정책 모드를 사용하지 않은 양식 검증
정책 모드를 사용하지 않을 때 가장 먼저 생각나는 검증 모드는 다음과 같습니다.
<body>
<form id="registerForm">
<label for="username"> :<input type="text" name="username"></label>
<label for="password"> :<input type="password" name="password"></label>
<label for="phone"> :<input type="text" name="phone"></label>
</form>
<script>
const form = document.querySelector('.registerForm');
form.onsubmit = function(){
if(form.username.value === ''){
alert(' ')
return;
}
if(form.password.value.length < 6){
alert(' 6 ')
return;
}
if(!/(^1[3|5|8][0-9]{9}$)/.test(form.phone.value)){
alert(' ')
return;
}
}
</script>
</body>
이러한 코드 작성 방식은 매우 흔하지만, 그 단점 역시 매우 뚜렷하다.정책 모드 최적화 사용
먼저 체크 함수를 하나의 객체로 봉인합니다.
const strategies = {
empty(value, errMsg){
if(value.length === 0){
return errMsg;
}
},
minLength(value, len, errMsg){
if(value.length < len){
return errMsg;
}
},
isMobile(value, errMsg){
if(!/(^1[3|5|8][0-9]{9}$)/.test(value)){
return errMsg;
}
}
}
유효성 검사 규칙을 대상 양식에 추가하는 데 사용되는 Validator 클래스도 있습니다. 이 클래스의 사용법은 다음과 같습니다.
const validate = function(){
const validator = new Validator();
validator.add(Form.userName, 'empty', ' ');
validator.add(Form.password, 'minLength:6', ' 6 ');
validator.add(Form.phone, 'isMobile', ' ');
const errMsg = validator.start();
return errMsg;
}
코드에서 보듯이validator 실례는add 방법이 있는데 3개의 파라미터를 수신한다. 첫 번째는 검증이 필요한 폼 실례이고 두 번째는 검증 방법이며 사칭 뒤에 전송된 파라미터이다.세 번째는 통과되지 않은 오류 알림 정보를 검증하는 것입니다.start 방법, 검사를 시작하는 데 사용됩니다. 통과하지 않으면 통과하지 않은 알림 정보를 되돌려줍니다. 이후 논리에서 처리할 수 있습니다
Validator 클래스 작성:
class Validator {
constructor(){
this.rules = [];
}
add(elem, rule, err){
const args_arr = rule.split(":");
this.rules.push(()=>{
const handler = args_arr.shift();
args_arr.unshift(elem.value);
args_arr.push(err);
return strategies[handler].apply(elem, args_arr)
})
}
start(){
let errmsg = []
for(let i = 0; i < this.rules.length; i++ ){
const err = this.rules[i]();
if(err){
errmsg.push(err)
}
}
return errmsg.join(",");
}
}
정책 모드를 사용하면 우리는 설정된 방식으로 표의 검사를 완성했다. 이러한 규칙은 이후의 어떤 검사 표에도 사용할 수 있고 수정과 복용이 더욱 편리하다단일 테이블 항목에 여러 개의 검증 규칙 추가
우리의 코드는 현재 단점이 하나 있다. 바로 특정한 폼 항목에만 단일 검증 규칙을 부여할 수 있고 하나의 폼에 여러 개의 검증 규칙을 실현할 수 없기 때문에 코드는 최적화된 공간이 있다.
class Validator{
// ・・・
add(elem, rules){
rules.forEach(rule => {
const args_arr = rule.strategy.split(":");
this.rules.push(()=>{
const handler = args_arr.shift();
args_arr.unshift(elem.value);
args_arr.push(rule.errMsg);
return strategies[handler].apply(elem, args_arr)
})
});
}
// ・・・
}
const validate = function(){
const validator = new Validator();
validator.add(Form.username,[{
strategy: 'empty',
errMsg: ' '
}]);
validator.add(Form.password, [{
strategy: 'minLength:6',
errMsg: ' 6 '
}]);
validator.add(Form.phone, [{
strategy: 'isMobile',
errMsg: ' '
}, {
strategy: 'empty',
errMsg: ' '
}]);
const errMsg = validator.start();
return errMsg;
}
단지 전참할 때 하나의 대상 수조에 전입하고add 함수에 해당하는 수조 처리 논리를 추가하면 된다전략 모델의 장점
장점:
총결산
Peter Norvig는 함수가 일등 대상인 언어에서 전략 모델은 스텔스이고strategy는 값이 함수인 변수라고 말했다.사실은 봉인된 정책 함수를 매개 변수로 삼아 사용하는 target에 전달하고 target에 의해 호출되는 과정이다. 좋은 정책 모델을 사용하면 이 모델에 대해 더욱 깊은 이해를 할 뿐만 아니라 함수를 사용하는 장점도 알 수 있다.
다음은 자바스크립트 정책 모드를 사용하여 폼의 상세한 내용을 검증하는 방법입니다. 자바스크립트에 대한 더 많은 자료는 저희의 다른 관련 글에 주목하십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JS 판단 수조 네 가지 실현 방법 상세그러면 본고는 주로 몇 가지 판단 방식과 방식 판단의 원리를 바탕으로 문제가 있는지 토론하고자 한다. 예를 들어 html에 여러 개의 iframe 대상이 있으면 instanceof의 검증 결과가 기대에 부합되지 않을...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.