JSFiddle - React, Tailwind, and code Playground
by shnny
HTML
<div class="cantainer">
<form class="formAll"action="">
<ul>
<li>
<label for="usename">用戶暱稱<span>*</span></label><br>
<input class= "usename"id="usename"type="text">
<p class="usename-text" style="display:none;">不能為空白、必須在40字以內</p>
</li>
<li>
<label for="email">Email 信箱<span>*</span></label><br>
<input class="email"id="email" type="email">
<p class="email-text" style="display:none;">不能為空白、必須包含 @ 符號</p>
</li>
<li>
<label for="password">密碼 <span>*</span></label><br>
<input class="password"id="password"type="password">
<p class="password-text" style="display:none;">不能為空白、必須在8字以上、必須在100字以內</p>
</li>
</ul>
<div class="btn-div">
<button>註冊</button>
</div>
</form>
</div>
CSS
body{
height: 100vh;
background: #D3A4FF;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
span{
color: red;
margin-left: 2px;
}
.cantainer{
padding:60px;
border: 1px solid #FFF;
border-radius: 10px;
background:#4B0091;
color: #D3A4FF;
}
li{
display: flex;
flex-direction: column;
}
li input{
border-radius: 5px;
padding: 2px;
}
.btn-div{
margin-top: 20px;
display: flex;
justify-content: center;
}
.btn-div button{
padding: 3px;
width: 100px;
border-radius: 5px;
cursor:pointer;
}
li p {
margin-top: 3px;
font-size: 10px;
color: red;
}
label{
margin-top: 3px;
}
JavaScript
const form = document.querySelector('.formAll')
const usename = form.querySelector('.usename')
const email = form.querySelector('.email')
const password = form.querySelector('.password')
const usenameText = form.querySelector('.usename-text')
const emailText = form.querySelector('.email-text')
const passwordText = form.querySelector('.password-text')
const inputAll = document.querySelectorAll('input')
form.addEventListener('submit',(e)=>{
e.preventDefault()
let isValue = true
//驗證暱稱
if(usename.value.trim() === '' ){
usenameText.style.display = 'block'
isValue = false
}else{
usenameText.style.display = 'none'
}
//驗證信箱
if(email.value.trim() === '' || !email.value.includes('@')){
emailText.style.display = 'block'
isValue = false
}else{
emailText.style.display = 'none'
}
//驗證密碼
if(password.value.trim() === '' || password.value.length< 8 || password.value.length> 100){
passwordText.style.display = 'block'
isValue = false
}else{
passwordText.style.display = 'none'
}
for(let i = 0 ; i<inputAll.length ; i++){
inputAll[i].addeventListener('input',(e)=>{
const warnText = inputAll[i].parentNode.querySelector('p')
warnText.style.display = 'none' ;
})
}
if (isValue) {
console.log('表單驗證通過,可以提交表單了!');
}
})