וולידציה לשדה טלפון - Regular expressions
במדריך זה נראה כיצד ניתן להגביל את הגולש להזין בשדה מספר טלפון בפורמט תקין בלבד באמצעות ביטוי רגולרי Regular expressions
בדוגמא הזאת אנחנו רוצים להגדיר ששדה טלפון יעבוד רק למספר טלפון ישראלי תקני כמו:
031234567 או 0501234567
לעומת זאת מספר טלפון כמו:
05012345678 או 12345
הטופס לא ישלח והגולש יקבל שגיאה שמספר הטלפון לא תקין. לדוגמא ניתן לבדוק את זה בטופס הבא:
ראשית, ניצור תגית עם id עבור השגיאה שתוצג למשתמש שמזין מספר טלפון לא תקין ונגדיר משתנה הקובע את הביטוי הרגולרי המגדיר את התנאים של התווים ששדה טלפון צריך להכיל.
עכשיו נגדיר משתנה לשדה טלפון, לתגית שיצרנו עבור השגיאה וכן לכפתור שליחת הטופס.
נכתוב פונקציה שבלחיצה על כפתור שליחה בודקת באמצעות המתודה ()test האם מתקיים התנאים שהגדרנו במשתנה של Regular expressions
אם התנאי לא מתקיים נציג שגיאה.
בגלל שאנחנו רוצים למנוע את שליחת הטופס במידה והטלפון לא תקין חשוב להוסיף לפונקציה את המתודה preventDefault שמבטלת את פעולת ברירת המחדל של הטופס שזה “שליחה”, אחרת השגיאה תוצג אבל הטופס ישלח בכל זאת…
ניתן לשכלל את הוולידציה למספר טלפון ישראלי מסוגים שונים:
/^(0(?:[23489]|5[0-689]|7[2346789])(?![01])(\d{7}))|(1(?:[7-9])00(\d{6}))|(1599(\d{6}))$/
או למספר סלולארי בלבד:
^[0][5][0|2|3|4|5|9]{1}[-]{0,1}[0-9]{7}$