✅ การตรวจสอบฟอร์มแบบเรียลไทม์
👇 ตัวอย่างแบบนี้ 👇
👀 สาธิตการทำงาน
<form onsubmit="event.preventDefault()">
อีเมล:
<input type="email" id="email" oninput="validateEmail()">
<div class="error" id="emailError"></div>
รหัสผ่าน (อย่างน้อย 6 ตัวอักษร):
<input type="password" id="password" oninput="validatePassword()">
<div class="error" id="passwordError"></div>
<button type="submit">ส่ง</button>
</form>
<style>
.error {
color: red;
font-size: 0.9em;
margin-bottom: 1em;
}
</style>
<script>
function validateEmail() {
const email = document.getElementById("email").value;
const error = document.getElementById("emailError");
error.textContent = email.includes("@") ? "" : "รูปแบบอีเมลไม่ถูกต้อง";
}
function validatePassword() {
const pass = document.getElementById("password").value;
const error = document.getElementById("passwordError");
error.textContent = pass.length >= 6 ? "" : "กรุณากรอกรหัสผ่านอย่างน้อย 6 ตัวอักษร";
}
</script>
✅ จุดประสงค์และประโยชน์ของเทมเพลตนี้
- ตรวจสอบความถูกต้องของข้อมูลได้ทันทีขณะพิมพ์
- ให้ประสบการณ์ผู้ใช้ที่ดีและเข้าใจง่าย
- สามารถเพิ่มโค้ดตรวจสอบได้ง่ายด้วย JavaScript
- โครงสร้างเข้าใจง่าย เหมาะสำหรับผู้เริ่มต้น
- สามารถนำไปใช้ในงานจริงได้ทันที
🧩 การใช้งานจริงและการขยายผลของการตรวจสอบฟอร์มแบบเรียลไทม์
การตรวจสอบข้อมูลแบบเรียลไทม์ช่วยให้ผู้ใช้สามารถตรวจสอบความถูกต้องของข้อมูลที่กรอกได้ทันทีขณะพิมพ์ ลดความเครียดก่อนส่งฟอร์มได้อย่างมาก โดยใช้เหตุการณ์ oninput ทำให้สามารถตรวจสอบข้อมูลได้โดยไม่ต้องรีโหลดหน้า
เช่น ในฟังก์ชัน validateEmail() จะใช้ email.includes("@") เพื่อตรวจสอบว่ามีเครื่องหมาย @ หรือไม่ แม้ว่าวิธีนี้จะช่วยป้องกันข้อผิดพลาดเบื้องต้นได้ แต่การใช้ regex เพื่อตรวจสอบอย่างละเอียดจะช่วยเพิ่มความแม่นยำ
🔍 เคล็ดลับเพิ่มเติมในการตรวจสอบ
ในกรณีของรหัสผ่าน นอกจาก password.length >= 6 แล้ว การใช้ /[A-Z]/ หรือ /\d/ เพื่อตรวจสอบการมีตัวอักษรใหญ่หรือตัวเลขก็เป็นแนวทางที่ดี
การใช้ innerText สำหรับแสดงข้อความผิดพลาดจะช่วยป้องกัน HTML ถูกตีความผิด และทำให้การแสดงผลชัดเจนปลอดภัย การแสดงข้อความผิดพลาดแยกแต่ละฟิลด์คือหลักการที่ดีต่อ UX
เทมเพลตนี้เหมาะสำหรับการเริ่มต้นใช้งาน validation หากต้องการสามารถขยายเพื่อรองรับฟิลด์อื่นๆ ได้อย่างยืดหยุ่น