בעבר, אימות טפסים יתרחש בשרת, לאחר שאדם כבר הזין את כל המידע שלו ולחץ על כפתור ההגשה.
אם המידע היה שגוי או חסר, השרת יצטרך לשלוח הכל בחזרה עם הודעה המורה לאדם לתקן את הטופס לפני הגשתו שוב.
זה היה תהליך ממושך והיה מכביד על השרת.
בימים אלה JavaScript מספק מספר דרכים לאמת את נתוני הטופס ישירות בדפדפן לפני שליחתם לשרת.
הנה קוד ה- HTML בו נשתמש בדוגמאות הבאות:
Form Validation // Form validation will go here
Username
Email Address
אימות בסיסי
סוג אימות זה כולל בדיקת כל שדות החובה וודא שהם ממולאים כהלכה.
הנה דוגמה בסיסית לפונקציה validate
המציגה התראה אם שם המשתמש וכתובות הדואר האלקטרוני ריקים, אחרת היא מחזירה נכון:
const submitBtn = document.getElementById('submit-btn'); const validate = (e) => { e.preventDefault(); const username = document.getElementById('username'); const emailAddress = document.getElementById('email-address'); if (username.value === "") { alert("Please enter your username."); username.focus(); return false; } if (emailAddress.value === "") { alert("Please enter your email address."); emailAddress.focus(); return false; } return true; } submitBtn.addEventListener('click', validate);
אבל מה אם מישהו מזין בטקסט אקראי ככתובת הדוא"ל שלו? נכון לעכשיו validate
הפונקציה עדיין תשוב אמיתית. כפי שאתה יכול לדמיין, שליחת נתונים גרועים לשרת עלולה להוביל לבעיות.
שם נכנס אימות פורמט נתונים.
אימות פורמט נתונים
סוג אימות זה למעשה מסתכל על הערכים בטופס ומאמת שהם נכונים.
אימות כתובות דוא"ל הוא קשה לשמצה - יש מספר עצום של כתובות דוא"ל ומארחים לגיטימיים, ואי אפשר לנחש את כל שילובי התווים התקפים.
עם זאת, ישנם מספר גורמים מרכזיים הנפוצים בכל כתובות הדוא"ל התקפות:
- כתובת חייבת להכיל תו אחד ולפחות נקודה אחת (.)
- התו @ לא יכול להיות התו הראשון בכתובת
- ה . חייב לבוא לפחות תו אחד אחרי התו @
עם זאת, אולי מפתחים משתמשים ב- regex כדי לקבוע אם כתובת דוא"ל תקפה או לא. הנה פונקציה שטיילר מקגניס ממליץ עליה בבלוג שלו:
const emailIsValid = email => { return /^[^\[email protected]][email protected][^\[email protected]]+\.[^\[email protected]]+$/.test(email); } emailIsValid('[email protected]@camp.org') // false emailIsValid('[email protected]') // true
נוסף לקוד מהדוגמה האחרונה, הוא ייראה כך:
const submitBtn = document.getElementById('submit-btn'); const validate = (e) => { e.preventDefault(); const username = document.getElementById('username'); const emailAddress = document.getElementById('email-address'); if (username.value === "") { alert("Please enter your username."); username.focus(); return false; } if (emailAddress.value === "") { alert("Please enter your email address."); emailAddress.focus(); return false; } if (!emailIsValid(emailAddress.value)) { alert("Please enter a valid email address."); emailAddress.focus(); return false; } return true; // Can submit the form data to the server } const emailIsValid = email => { return /^[^\[email protected]][email protected][^\[email protected]]+\.[^\[email protected]]+$/.test(email); } submitBtn.addEventListener('click', validate);
אילוצי טופס HTML5
חלק מהאילוצים הנפוצים ב- HTML5 הם
type
המאפיין (למשל type="password"
) maxlength
, required
ו- disabled
.
אילוץ פחות נפוץ הוא pattern
המאפיין שלוקח ביטוי רגיל של JavaScript.
עוד מידע
- אימות נתוני טופס | MDN
- אימות אילוצים | MDN