DOMを使用した検証スプレー
登録会員IDとパスワードの有効性を検証する印刷を行いました.
index.htmlは、まずDOM操作HTMLを使用する入力またはdivにid、classを指定します. script.js
次に、入力ごとにイベントコードを見てみましょう. id入力時
ex)パスワード入力時 確認パスワード入力時 入力会員入力ボタン をクリック
DOMはquerySelectorとclassListを使用します.add、remove程度が少ないので使いやすいです.
久しぶりに有効性検証が行われ、指定条件が少し混同されていましたが、難しくなくて面白かったです.
index.html
<body>
<h1>회원가입</h1>
<fieldset>
<div>
<label>아이디</label>
<input type="text" id="username" required />
<div class="failure-message hide">아이디는 네 글자 이상이어야 합니다</div>
<div class="success-message hide">사용할 수 있는 아이디입니다</div>
<div class="validation hide">아이디는 영어와 숫자로만 가능합니다</div>
</div>
</fieldset>
<fieldset>
<label>비밀번호</label>
<input type="password" id="password" required />
<div class="validation-ps hide">
최소 8자 이상이면서, 알파벳과 숫자 및 특수문자는 최소 하나 포함
</div>
</fieldset>
<fieldset>
<label>비밀번호 확인</label>
<input type="password" id="password-retype" required />
<div class="mismatch-message hide">두 비밀번호가 일치하지 않습니다</div>
</fieldset>
<fieldset>
<button id="submit">회원가입</button>
</fieldset>
<script src="script.js"></script>
</body>
let elInputUsername = document.querySelector("#username");
let elFailureMessage = document.querySelector(".failure-message");
let elSuccesssMessage = document.querySelector(".success-message");
let elpassword = document.querySelector("#password");
let elpasswordRe = document.querySelector("#password-retype");
let mismatchMessage = document.querySelector(".mismatch-message");
let elValidation = document.querySelector(".validation");
let elValidationPs = document.querySelector(".validation-ps");
let submitBtn = document.querySelector("#submit");
まず、DOM操作を使用する要素をquerySelectorに読み込み、変数に格納します.// 4글자 이상인지
function isMoreThan4Length(value) {
return value.length >= 4;
}
// 패스워드가 일치 하는지
function isMatch(password1, password2) {
if (password1 == password2) {
return true;
} else {
return false;
}
}
// [유효성 검증 함수]: 영어 또는 숫자만 가능
function onlyNumberAndEnglish(str) {
return /^[A-Za-z][A-Za-z0-9]*$/.test(str);
}
// [유효성 검증 함수]: 최소 8자 이상하면서, 알파벳과 숫자 및 특수문자(@$!%*#?&) 는 하나 이상 포함
function strongPassword(str) {
return /^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!%*#?&]{8,}$/.test(
str
);
}
アクティビティで使用する関数は4種類あります.(コメントを参照)次に、入力ごとにイベントコードを見てみましょう.
elInputUsername.onkeyup = function () {
if (isMoreThan4Length(elInputUsername.value)) {
elFailureMessage.classList.add("hide");
} else {
elFailureMessage.classList.remove("hide");
}
if (onlyNumberAndEnglish(elInputUsername.value)) {
elValidation.classList.add("hide");
} else {
elValidation.classList.remove("hide");
}
if (
isMoreThan4Length(elInputUsername.value) &&
onlyNumberAndEnglish(elInputUsername.value)
) {
elSuccesssMessage.classList.remove("hide");
alert('성공');
} else {
elSuccesssMessage.classList.add("hide");
}
};
条件に応じてDOMを使用してクラス名を変更します.ex)
<div class="success-message hide">
の初期値はsuccess-message hideである.elSuccesssMessage.classList.remove("hide");
が実行されると、非表示が消去され、divが表示される.elpassword.onkeyup = function () {
if (strongPassword(elpassword.value)) {
elValidationPs.classList.add("hide");
} else {
elValidationPs.classList.remove("hide");
}
if (isMatch(elpassword.value, elpasswordRe.value)) {
mismatchMessage.classList.add("hide");
} else {
mismatchMessage.classList.remove("hide");
}
};
elpasswordRe.onkeyup = function () {
if (isMatch(elpassword.value, elpasswordRe.value)) {
mismatchMessage.classList.add("hide");
} else {
mismatchMessage.classList.remove("hide");
}
};
submitBtn.addEventListener("click", function () {
if (
isMoreThan4Length(elInputUsername.value) &&
onlyNumberAndEnglish(elInputUsername.value) &&
strongPassword(elpassword.value) &&
isMatch(elpassword.value, elpasswordRe.value)
) {
alert("축하합니다!");
} else if (
isMoreThan4Length(elInputUsername.value) === false ||
onlyNumberAndEnglish(elInputUsername.value) === false
) {
alert("id를 다시 확인하세요!");
} else if (
strongPassword(elpassword.value) === false ||
isMatch(elpassword.value, elpasswordRe.value) === false
) {
alert("비밀번호를 다시 확인하세요!");
}
});
スプレーをかけるDOMはquerySelectorとclassListを使用します.add、remove程度が少ないので使いやすいです.
久しぶりに有効性検証が行われ、指定条件が少し混同されていましたが、難しくなくて面白かったです.
Reference
この問題について(DOMを使用した検証スプレー), 我々は、より多くの情報をここで見つけました https://velog.io/@dnwlaos23/DOM을-이용한-유효성-검증-스프린트テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol