PracticU

Validations

בלי כתוביותעם כתוביות
PracticU › קורס Javascript כולל JQuery › Validations
מילון מושגים:
טופס - אזור בממשק שבו המשתמש מזין נתונים בשדות ושולח אותם, למשל טופס הרשמה או התחברות.
אירוע - התרחשות שהמערכת מזהה ויכולה להגיב לה, כמו לחיצת עכבר, הקשה או סיום פעולה.
DOM - ייצוג עץ של מבנה דף HTML בזיכרון, שמאפשר לקוד לקרוא ולשנות את תוכן הדף ומבנהו.
תגית - סימון בקוד, למשל ב-HTML, שתוחם רכיב ומגדיר את תפקידו או תכונותיו. גם תווית לסימון וקיטלוג פריטים.
מאפיין - תכונה שמצמידים לרכיב ומתארת אותו או את התנהגותו, למשל מאפיין של תגית HTML או שדה באובייקט.
PHP - שפת תכנות לצד השרת, נפוצה בבניית אתרים דינמיים ומערכות ניהול תוכן כמו WordPress.
HTML - שפת הסימון שבה בונים את מבנה ותוכן דפי האינטרנט, באמצעות תגיות שמגדירות כותרות, פסקאות, קישורים ועוד.
CSS - שפת עיצוב שקובעת את המראה של דפי אינטרנט: צבעים, גופנים, מיקום וסידור הרכיבים.

Validations

בשיעור זה אנו לומדים כיצד לבצע אימות קלט בצד הלקוח באמצעות ג'אווה סקריפט. אנו בונים טופס רישום מלא, מחברים אליו פונקציית בדיקה דרך אירוע הלחצן, משתמשים ב-DOM לקבלת הערכים מתיבות הטקסט והרשימה, ומשלבים ביטויים סדירים לאימות אימייל וטלפון סלולרי, תוך ראיית שתי שיטות לשליחת הטופס.
נושאי הסיכום המוצגים בשיעור:
1. מטרת אימות הקלט: אנו מבצעים ולידציה על קלט של משתמש על ידי שילוב של שלוש יכולות שלמדנו: אירועים לקריאה לפונקציית בדיקה בג'אווה סקריפט, ה-DOM לקבלת הנתונים מתיבות הטקסט והסלקט, ו-Regular Expression לבדיקות מורכבות כמו אימייל וטלפון.
2. בניית הטופס: מגדירים תגית form עם מאפיין action המפנה לדף השומר את הפרטים, שבמציאות צריך להיות דף הרץ בצד השרת כמו asp או aspx או php ולא html שאינו רץ בצד השרת. בתוך הטופס מגדירים שדה שם פרטי, שם משפחה, ג'נדר, אימייל וטלפון.
3. ההבדל בין id ל-name: התפקיד של ה-name הוא שהמידע מהרכיב יוכל להגיע לצד השרת בעת submit, והתפקיד של ה-id הוא שרכיבים אחרים בדף, ג'אווה סקריפט או CSS, יוכלו לגשת לרכיב בצד הלקוח.
4. רכיב הג'נדר והלחצנים: הג'נדר מוגדר כ-select עם אופציות Male, Female ואופציית ברירת מחדל של Select Gender, כאשר לכל אופציה יש value. מוסיפים לחצן input type=submit עם הערך send ולחצן reset עם הערך clear כדי שהמשתמש יוכל לנקות את התיבות.
5. בדיקת שליחת הנתונים: בונים דף יעד פשוט ורצים את הטופס. בכתובת של דף היעד רואים את כל המידע שהגיע ב-query string לפי ה-name של כל רכיב, כאשר התו אמפרסנד מפריד בין הפריטים השונים, וכך מאמתים שהמידע אכן מגיע לדף היעד.
6. מועד הבדיקה ואירוע הלחצן: הבדיקה מתבצעת כאשר לוחצים על לחצן ה-submit. באירוע onclick של הלחצן קוראים לפונקציה בשם validate שמבצעת את בדיקות אימות הקלט, ומכיוון שאנו רוצים שהפונקציה תוכל לבטל את פעולת ה-submit במקרה של שגיאה, קוראים לה עם המילה return.
7. ערך ההחזר של הפונקציה: אם הפונקציה מחזירה true הפעולה מאושרת והדף מגיע לדף היעד, ואם היא מחזירה false פעולת ה-submit מבוטלת והמשתמש נשאר בדף. בתוך הפונקציה, במידה ונמצאה שגיאה מוצגת הודעה ומוחזר false, ובסוף הפונקציה מוחזר true.
8. בדיקת שם פרטי ושם משפחה: הלוגיקה היא שהמשתמש חייב להכניס לפחות שם פרטי או שם משפחה או שניהם. מקבלים את הערכים בעזרת document.getElementById עם ה-id של התיבה וניגשים למאפיין value שמכיל את הטקסט שנכתב בתוכה, ואם שתי המחרוזות ריקות יחד מוצגת הודעת שגיאה please fill first name and/or last name ומוחזר false.
9. בדיקת הג'נדר ופוקוס: המשתמש חייב לבחור ג'נדר. בודקים אם ה-value של ה-select עדיין שווה לערך של אופציית ברירת המחדל, ואם כן מוצגת הודעה you must select gender, מוחזר false, ובנוסף קוראים לפונקציה focus על הרכיב כדי שהפוקוס יחזור מיד אל ה-select.
10. בדיקת אימייל עם רגקס: האימייל אינו חובה, אבל אם הושם ערך הוא חייב להיות חוקי. מגדירים משתנה מטיפוס RegExp עם ביטוי האימייל שמועתק מחיפוש בגוגל, מחליפים את backslash b שמתאר גבולות מילים בקראט בהתחלה ובדולר בסוף כדי שכל המחרוזת תהיה חייבת להיות שווה לאימייל חוקי, ומוסיפים i לאי-רגישות לאותיות. הבדיקה היא שהאימייל שונה ממחרוזת ריקה וגם תוצאת ה-test עליו היא false, ואז מוצגת הודעה, מועבר פוקוס לתיבה ומוחזר false.
11. בדיקת טלפון סלולרי ושמות תקינים: משכפלים את הבדיקה עבור הטלפון תוך שינוי כל הפרמטרים, כי העתקה שלא עודכנה בה השמות היא טעות copy paste חמורה ונפוצה בתכנות. שמות התיבות צריכים להיות הגיוניים, כך שתיבת טקסט שמתארת טלפון תיקרא txt phone בלי קיצורים. הביטוי לטלפון מועתק מהאינטרנט ומתוקן: הסוגריים שדורשים מינוס 0 או 1 פעמים מוחלפים בסימן שאלה, והספרות נדרשות בדיוק שבע פעמים. ג'יבריש בטלפון מציג הודעת שגיאה, וטלפון חוקי כמו 054-1234567 עובר בהצלחה.
12. שליחה בלחצן רגיל עם submit מתוכנת: אפשר להחליף את לחצן ה-submit בלחצן input type=button רגיל שאינו שולח את הטופס לבד. בפונקציה המשוכפלת אין צורך להחזיר false אלא פשוט יוצאים מהפונקציה במקרה של שגיאה, ובסוף, כשהכל תקין, מגיעים בעזרת document.getElementById לאובייקט הטופס, שקיבל id בשם myForm, וקוראים לפונקציה submit שלו כדי לשלוח את הדף ליעד בעצמנו.
בסיום השיעור בנינו טופס מלא עם בדיקות אימות קלט בצד הלקוח, חיברנו אותן לאירועי הלחצנים, קיבלנו נתונים בעזרת ה-DOM, אימתנו אימייל וטלפון בעזרת ביטויים סדירים, ולמדנו שתי שיטות לשליחת הטופס: לחצן submit עם החזרת true או false, ולחצן רגיל עם submit מתוכנת. תודה רבה, ולהתראות בשיעור הבא.
בשיעור הבא נעסוק בנושא Images.
SR624HE
מילון מושגים:
קוד מקור - הקוד שמפתחים כותבים בשפת תכנות, לפני הידור, המגדיר את פעולת התוכנה.
Java - שפת תכנות עילית ומונחית עצמים, הרצה על מכונה וירטואלית (JVM) ומשמשת לפיתוח מגוון יישומים.

להורדת קוד מקור של כל הדוגמאות בקורס  JAVA SCRIPT למתחילים -לחץ כאן לתלמידי המכללה בלבד

להורדת קוד מקור של כל הדוגמאות בקורס  JAVA SCRIPT למתקדמים- לחץ כאן לתלמידי המכללה בלבד

פרקי ההרצאה: Validations

  1. 00:00

    מבוא לאימות קלט

  2. 00:38

    בניית טופס ההרשמה

  3. 05:00

    יצירת דף היעד

  4. 06:38

    הפעלת הבדיקה בלחיצת submit

  5. 07:31

    ביטול submit עם return

  6. 08:31

    שליפת ערכים מתיבות הטקסט

תמלול ההרצאה: Validations

הטקסט המלא של הדקות הראשונות בהרצאה «Validations» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:01

    הדבר הבא שאנחנו הולכים לראות זה איך אנחנו יכולים לבצע ולידציה על קלט של משתמש. לצורך כך אנחנו הולכים להשתמש גם באירועים בכדי לקרוא לפונקציה ב-JavaScript שתבצע את הבדיקה, גם בכל מה שלמדנו על הדום Document Object Model בכדי לקבל את הנתונים שהמשתמש הכניס מתיבות הטקסט והסלקט, וגם ב-Regular Expression בכדי ממש להצליח ולבצע בדיקות קצת יותר מורכבות,

  2. 00:32

    כמו לדוגמא אימייל או טלפון וכולי. אז בואו נראה איך אנחנו יכולים לעשות את זה. אז ראשית בואו נגדיר לעצמנו את הטופס יש לנו פה תגיד פורם המאפיין אקשן הולך להפנות אותנו לדף שהתפקיד שלו זה לשמור את הפרטים בואו נקרא לו סייב נקודה כרגע ויהיה htm למרות שבמציאות זה אמור להיות דף עם סיומת asp או asp.net כלומר aspx או php כל דף שיכול להתבצע

  3. 01:05

    בצד השרת html לא רץ בצד השרת. אבל כרגע לצורך העניין זה יהיה בסדר. יש לנו פה את הגיט פורם ובואו נניח שיש לנו כאן איזשהו ספן של first name יש לנו תיבת טקסט עבור first name input type זה טקסט ניתן לה id txt first name וניתן לה גם name של txt first name כאשר בואו ניזכר מה ההבדל בין id לבין name.

  4. 01:42

    התפקיד של name זה בכדי שהמידע מהרכיב יוכל להגיע לצד של השרת כלומר לדף הזה כשמבצעים submit והתפקיד של ה-id זה בכדי שרכיבים אחרים בדף ה-html או javascript או css יוכלו לגשת בצד של הלקוח לרכיב בעזרת ה-id שלו כמובן שהם יכולים לגשת גם בעזרת ה-name אבל טוב שיהיה גם id לרכיבים מסוימים שאנחנו רוצים לגשת אליהם עם javascript.

  5. 02:15

    בואו נניח שזה דבר אחד שאנחנו רוצים. בואו נניח שאנחנו רוצים גם שם משפחה. אז יש לנו פה את ה-Last Name ויש לנו פה ID.TXT.Last Name.

  6. 02:32

    יש לנו Name זה גם כן TXT.Last Name. בנוסף נגדיר שאנחנו רוצים את ה-Gender כלומר המין של המשתמש. יש לנו פה Span Gender ולצורך כך בואו נגדיר Select.

  7. 02:54

    ל-Select כמובן גם כן יש ID Cell Gender ו-Name Cell Gender ובתוכו יש לנו אופשנים של Male ואופשן של Female כאשר ה-Value שלהם גם צריך להיות משהו שמתאר את זה לדוגמה גם כן Male ו-Value Female ובואו נניח שיש לנו עוד אופשן אחד שמתאר Select Gender וה-Value שלו בואו נניח שהוא הוא נרשום נ"ל, אז זה בעצם הג'נדר.

  8. 03:50

    מעבר לג'נדר, בואו נגדיר פה ירידת שורה ונגדיר אימייל, ספאן עבור אימייל, אם כמובן תיבת טקסט נוכל להעתיק אותה מכאן, שתתאר לנו input type שווה טקסט, ID txt, אימייל וגם ה-name txt, אימייל ואותו הדבר נגדיר עבור טלפון, יש לנו פה phone, txt, phone, txt, phone.

  9. 04:31

    בקשר ללחצנים, בואו נגדיר לחצן אחד של input type=submit value send ועוד input type= reset value clear כדי שהמשתמש יוכל לנקות את התיבות. עכשיו אנחנו צריכים להגדיר את הדף הזה, save.

  10. 05:06

    בואו נצרף new file חדש מסוג html עבור שמירת הנתונים בצד השרת. נגדיר פה open וזה בעצם הדף שנגדיר פה איזשהו h1, saving the data.

  11. 05:30

    כאן יש לנו save. בואו נשמור אותו באותה תיקייה, save.htm ואנחנו יכולים לסגור אותו ולבדוק כרגע האם המידע אכן מגיע לדף היעד. אז נריץ את הדף שלנו ואנחנו יכולים להכניס נתונים, הם יכולים להיות נכונים, הם יכולים להיות לא נכונים, אנחנו יכולים גם לא להכניס שום דבר בתיבות מסוימות,

  12. 06:04

    וללחוץ על send והגענו לדף היעד ואנחנו רואים כאן למעלה את כל המידע שמגיע אלינו ב-query string אנחנו יכולים לראות את המידע לפי ה-name וזה בדיוק הסיבה שהיינו צריכים את ה-name שווה והערכים ששלחנו בתיבות הטקסט.

  13. 06:22

    אמפרסנד מפריד בין הפריטים השונים כאן אנחנו רואים txt last name שווה ואנחנו רואים את המידע שנכנס כרגע הוא לא נכנס ולכן יש לנו פה מחוזת ריקה לאחר מכן sell gender שווה וכו' וכו'.

  14. 06:38

    אנחנו בעצם רוצים עכשיו לבצע מספר בדיקות אימות קלט בכדי לראות שהמידע באמת הוא תקין מבחינתנו. בואו נתחיל לחשוב איך אנחנו יכולים לעשות את זה.

  15. 06:51

    אז ראשית מתי אנחנו רוצים לבצע את הבדיקה? אנחנו רוצים לבצע את הבדיקה כמובן כאשר לוחצים על הלחצן submit. אוקיי, מה זאת אומרת שאנחנו צריכים להשתמש ביכולות שלמדנו בקשר לאירועים?

  16. 07:03

    ולכן אנחנו צריכים לקחת את האירוע onclick ובאירוע onclick שמתבצע כמובן כשלוחצים קליק על הלחצן לקרוא לפונקציה בוא נקרא לפונקציה שנקראת ולידייק והיא תבצע את הבדיקות אימות קלט.

  17. 07:18

    במידה והיא מצאה שגיאה הפונקציה הולכת להציג הודעת שגיאה למשתמש בלי לרוץ לצד של השרת. אבל הפונקציה הזאת היא צריכה גם לדעת לבטל את לחצן הסבמיט ואנחנו ראינו שבשביל לעשות את זה היא צריכה להחזיר לנו true או false.

  18. 07:34

    אם הפונקציה מחזירה true אז אנחנו רוצים שהיא תאשר את הפעולה של הלחצן ואכן הדף יגיע לדף היעד. אם היא תחזיר לנו פולס אנחנו רוצים לבטל את פעולת הסאבמיט לצורך כך אנחנו צריכים להחזיר את הערך שחוזר מהפונקציה על ידי המילה ריטרן.

  19. 07:49

    עכשיו אנחנו יכולים לגשת ובג'אווה סקריפט לבנות את הפונקציה הזאת. אז בואו נעתיק אותה נלך לאזור של הג'אווה סקריפט נבנה function validate ובתוך הפונקציה אנחנו הולכים לבצע את הבדיקות.

  20. 08:08

    במידה והייתה שגיאה אנחנו מציגים הודעה ומחזירים פולס. במידה והכל בסדר בסוף הפונקציה נחזיר true. אז בואו נתחיל לחשוב מה הבדיקות שאנחנו רוצים לעשות.

  21. 08:20

    אז בואו נניח שמבחינתנו המשתמש חייב להכניס או שם פרטי או שם משפחה או שניהם. זאת אומרת שאנחנו צריכים לבדוק האם המידע שנכנס בתיבת הטקסט של ה-TXT first name שונה ממחרוזת ריקה או המידע שנכנס יותר נכון וגם המידע שנכנס ל-last name שונה ממחרוזת ריקה.

  22. 08:49

    במידה ושניהם ביחד מחוזת ריקה זה לא בסדר אני מכניס או מציג איזושהי הודעת שקיעה. לצורך כך אני צריך לקחת את הערכים מתיבות הטקסט. אז בואו נגדיר כאן משתנים var first name ונגיע למידע על ידי document.getElementByID נשלח את התיבה טקסט את ה-ID של התיבה טקסט txt first name וקיבלנו בחזרה את כל הדבר הזה שווה

  23. 09:21

    בעצם בחזרה. אובייקט בעץ אדום שמתאר את תיבת הטקסט. אם אני רוצה לקחת את הערך שנמצא בתוך תיבת הטקסט, עליי להיכנס למאפיין value שזה המידע שרשום בתוך תיבת הטקסט, ואז לקחתי את הטקסט עצמו.

  24. 09:38

    אותו הדבר נבצע על ה-last name, ואז יש לנו פה גם txt last name נקודה

לקורס המלא: קורס Javascript אונליין

ההרצאה הקודמת: RegEx in JavaScript

ההרצאה הבאה: Images

קורסים נוספים במסלול

  • קורס יסודות HTML - בניית אתר אינטרנט פשוט
  • קורס CSS 3 - בדגש על Flex & Grid
  • קורס ג'אווה סקריפט מעשי - JavaScript
  • קורס TypeScript
  • קורס ריאקט - React
  • קורס NodeJS