פרק לדוגמה
Transcription
פרק לדוגמה
נושא 8 הגדרה מהו טופס? נציג כאן שתי הגדרות שישרתו את המטרות של כתיבת הפרק: הגדרה :1הטופס הוא כלי לאיסוף נתונים הבנוי משדות אותם הגולש ממלא ושולח למנהל האתר או למאגר נתונים )הרחבה ראה בנושא :9טפסים – עמוד .(59 הגדרה :2הטופס הוא אובייקט השייך לאובייקט מסמך שנגזר מאובייקט חלון )ראה תרשים בנושא :2אובייקט חלון בעמוד .(85 שתי ההגדרות יתנו מענה הולם להתייחסות לטופס ,הן מבחינת הגולש )שממלא את הנתונים בטופס או בוחר אותם מתוך רשימה( והן מבחינת המתכנת שבונה את הטופס וצריך לבדוק את תקינותו. ...íòôבעבר כאשר הלקוח היה ממלא טפסים ,בדיקת אימות הנתונים של הטופס הייתה מתבצעת בשרת .הלקוח היה ממלא את הטופס ושולח ,בשרת היו מתבצעות בדיקות כגון האם מולאו כל השדות ,האם כתובת הדואר חוקית וכו' .תוצאות הבדיקה היו חוזרות ללקוח עם דרישה לתיקון. הליך זה היה מאט את קצב העבודה אצל הלקוח וגורם עומס מיותר על השרת. ...íåéëלפני שליחת הנתונים נהוג לבדוק במחשב הלקוח את הערכים שהוקלדו בטופס ולבדוק שהטופס מולא כנדרש ככל שניתן .הבדיקות מתבצעות בעזרת הוראות ב.JavaScript - בדיקת שדות טופס ואימות נתונים לשם מה? טופס הוא כלי חשוב ושכיח לאיסוף נתונים מהגולשים ומשתמשים באתרי אינטרנט רבים. דוגמאות לבדיקות בטופס בשדה ת.ז – .האם נרשם ערך המורכב מ 9 -תווים. בשדה ד.אלקטרוני – האם כתובת הדואר חוקית )למשל האם הכתובת מכילה @(. בשדה מיקוד – האם מספר הספרות .5 בחלק ב של הספר html :למדנו כיצד לבנות טפסים ולשלבם בדפי האתר. בחלק ג )הנוכחי( של הספר JavaScript :נלמד כיצד לבדוק את הטפסים שמילאו הגולשים בעזרת פנייה לערכים שבשדות הטופס .הפנייה מתבצעת בעזרת תחביר הנקודה .שם שדה.שם טופסdocument . )הערה :התחביר המלא הוא ...-שם שדה.שם טופס(windows. document . בפרק הבא נראה כיצד ניתן לבצע על הערכים בדיקת מורכבות יותר בעזרת פונקציות של מחרוזות. .............................................................................................................................. ................................................................................................................................................ 128 JavaScript – èðøèðéà úáéáñá úåðëúì àåáî © 'úåðåìçì èáî'ì úåøåîù úåéåëæä ìë èñ÷è äãù ú÷éãá שדה טקסט הוא שדה בו הגולש מקליד מחרוזת תווים .את הערך בשדה טקסט ניתן לשלוף ולהתייחס אליו כאל מחרוזת טקסט ולבצע עליו את כל הפעולות שביצענו על טקסט כגון :השוואה, הדפסה ,השמה במשתנה וכו'. מבנה הפנייה לערך שדה טקסט בטופס פנייה לשדה טקסט השמת ערך בשדה טקסט .valueשם השדה בטופס.שם הטופסdocument. ערך =.valueשם השדה בטופס.שם הטופסdocument. form_a.html èñ÷è äãù :1 äøåúô äîâåã בנה טופס בו הגולש יקליד את צבע הרקע של המסמך או יקליד קוד הקסדצימלי לצבע. לאחר האירוע של לחיצת כפתור ,צבע הרקע ישתנה בהתאם לערך שהוקלד. התוצאה בדפדפן בניית טופס המכיל שדה טקסט וכפתור הטופס לאחר הקלדת צבע רקע: דוגמה פתורה > <html ><head > </titleטפסים ><title >"<script language="javascript <!-)(function MYbg_color { הפונקציה MYbgcolorמשנה את הרקע במסמך בהתאם לערך שיוקלד בשדה .הפונקציה מכילה הוראה הבודקת האם הוקלד ערך :אם לא הוקלד ערך יופיע חלון ובו כתוב "הכנס צבע" ,אם כן משנה את צבע הרקע בהתאם לערך שהתקבל מהטופס. הטופס כפי שמוצג לגולש: לקבלת הערך שהוקלד בשדה הטקסט )""==if (document.change.color.value )"הכנס צבע"(alert else { ;document.bgColor=document.change.color.value "בוצע"=document.change.color.value } } >//-- ></script > </head ><body לאחר הלחיצה על הכפתור: הקש שם של צבע או ערך הקסדצימלי >"<form name="change ><input type="text" name="color" size=10 ><br "לחץ לשנות צבע "=<input type="button" value >onclick="MYbg_color()"> <br> <br ></form ></body לכפתור הוספנו הוראה לזמן > </ html ולהפעיל את הפונקציה לשינוי צבע )לאחר האירוע .(OnClick JavaScript – èðøèðéà úáéáñá úåðëúì àåáî © 'úåðåìçì èáî'ì úåøåîù úåéåëæä ìë 129 åéãø äãù ú÷éãá שדה רדיו הוא שדה בו הגולש מסמן אחת מבין מספר אפשרויות המוצגות לפניו ככפתורי רדיו בטופס המכיל כפתורי רדיו יש לכל האיברים )כפתורי הרדיו באותו הבלוק( שם זהה .זהו למעשה מערך* בעל שם אחד המכיל ערכים שונים .ניתן לגשת לכל אחד מערכי המערך באמצעות מיקומם. * מערך הוא אוסף ערכים מאותו טיפוס שהגישה אליהם ע"י ציון שם המערך ומיקום האיבר מבנה הפניה לערך שדה רדיו בטופס ].valueמיקום הכפתור במערך[שם השדה בטופס.שם הטופסdocument. åéãø éøåúôë :2 äøåúô äîâåã form_b.html בנה טופס בו הגולש מסמן אחת מתוך 3אפשרויות המציינות את השעה שהגיע לבית המלון. לאחר אירוע של לחיצת כפתור תוצג בחלון הודעה עם הבחירה. התוצאה בדפדפן דוגמה פתורה קוד התכנית -בניית טופס המכיל שדה רדיו וכפתור )הסבר מפורט ראה עמוד הבא( >"< html dir="rtl > < head > </ titleכפתורי רדיו -טפסים > < title הטופס כפי שמוצג לגולש: >"<script language="javascript הפונקציה מזהה את כפתור הרדיו <!-שהגולש בחר ומציגה את בחירתו בחלון. )(function bdika { )for(i=0;i<document.hotel.reaching.length;i++ הטופס לאחר בחירת כפתור: )if(document.hotel.reaching[i].checked==true { ;)alert(document.hotel.reaching[i].value ;break } שם הטופס " "hotelוהוא מכיל 3כפתורי רדיו. לכל כפתורי הרדיו יש שם זהה .reaching -כל אחד מהכפתורים מכיל ערך אחר, morning : .evening , noon לאחר הלחיצה על הכפתור "בדיקה": 130 } >//-- > </ script ></head > <body >"<form name="hotel > <brבחר שעת הגעה > <brשעות הבוקר >"<input type="radio" name="reaching" value="morning > <brשעות הצהריים >"<input type="radio" name="reaching" value="noon > <brשעות הערב >"<input type="radio" name="reaching" value="evening >")(" onclick="bdikaבדיקה"=<input type="button" value <</form ></body ></html JavaScript – èðøèðéà úáéáñá úåðëúì àåáî © 'úåðåìçì èáî'ì úåøåîù úåéåëæä ìë הסבר: .1איך ניתן לדעת כמה כפתורי רדיו יש? לאוסף כפתורי הרדיו יש מאפיין שנקרא ) lengthאורך( המאפשר לדעת כמה כפתורים הוגדרו. ) alert(document. hotel. reaching.lengthנקבל את המספר ,3יש 3אברים. אם נרשום מאפיין אורך .2 .3 כיצד נדע מה הגולש בחר ? לכל כפתור רדיו יש מאפיין שנקרא .checkedערכו של מאפיין checkedהוא trueאם הכפתור נבחר וערכו falseאם הכפתור לא נבחר .כדי לדעת אם כפתור נבחר יש לעבור על כל הכפתורים ולבדוק עבור כל כפתור את ערך המאפיין .checkedהכפתור שעבורו המאפיין checkedהוא trueהוא הנבחר. כיצד נגיע לערך של כל איבר? מערך כפתורי הרדיו מכיל 3איברים .האיברים ממוקמים מהמקום ה 0 -עד מקום .2 הערך morning noon evening מיקום 0 1 2 נוכל להגיע ולהציג את ערכו של כל איבר על-ידי ציון מיקומו ושימוש במאפיין .valueלמשל: document.hotel.reaching[0].value document.hotel.reaching[1].value .4 לולאת ה for -לסריקת כפתורי הרדיו ומציאת הערך שסומן : הלולאה צריכה להתבצע החל מ) 0 -מיקום האיבר הראשון( ועד למיקום האיבר האחרון. במהלך הלולאה נבדק ערכו של המאפיין .checkedאם ערכו trueאז מצאנו את הכפתור הנבחר ונציג את ערכו בחלון. ניתן לסיים את הלולאה ולא להמשיך לבצעה כאשר מצאנו את הכפתור )הערך( באמצעות הוראת ה .break -הוראה זו אינה חובה אך מאפשרת לתכנית להיות יעילה יותר. úììâð äîéùø äãù ú÷éãá רשימה נגללת היא שדה המאפשר לגולש לבחור אחד או כמה מבין הפריטים הרשומים בה. מבנה הפנייה לערך של שדה ברשימה נגללת בטופס מיקום האיבר הנבחר מהרשימה .selectedIndexשם השדה בטופס.שם הטופסdocument. ערך האיבר הנבחר מהרשימה ].valueמיקום [.optionsשם השדה בטופס.שם הטופסdocument. JavaScript – èðøèðéà úáéáñá úåðëúì àåáî © 'úåðåìçì èáî'ì úåøåîù úåéåëæä ìë 131 דוגמה פתורה form_c.html úììâð äîéùø :3 äøåúô äîâåã בנה טופס המכיל רשימה נגללת עם שלושה שמות .לאחר אירוע של לחיצת כפתור יוצג בחלון השם. בניית טופס המכיל רשימה נגללת וכפתור התוצאה בדפדפן >"<html dir="rtl ><head >"<script language="javascript <!-)(function bdika ; { var mikum ; mikum = document.tofes.MYlist.selectedIndex מיקום=)אינדקס( הערך שנבחר מתיבת הבחירה // ; )alert(document.tofes.MYlist.options[mikum].value הטופס כפי שמוצג לגולש: הטופס לאחר פתיחת הרשימה: הערך= )תוכן( הנבחר בתיבת בחירה // } >//-- ></script ></head > <body >"<form name="tofes > "<select name="MYlist > </optionרון >"<option value="Ron > </optionבן >"<option value="Ben > </optionבר >"<option value="Bar ></select >")(" onclick="bdikaבדיקה"=<input type="button" value ></form ></body ></html לאחר הלחיצה על הכפתור "בדיקה": הסבר: .1כיצד נדע מיקום האיבר הנבחר מהרשימה? לרשימה נגללת יש מאפיין שנקרא .selectedIndexהמאפיין מכיל את מיקומו של הערך הנבחר למשל :אם נבחר האיבר הראשון ערכו של המאפיין יהיה .0נוכל להשים את הערך המתקבל במשתנה .למשל.mikum=document.tofes.MYlist.selectedIndex : .2כיצד נגיע לערך של כל איבר? בדוגמה יש 3איברים המסודרים כמערך .האיברים ממוקמים החל מהמקום ה 0 -עד מקום .2נוכל להגיע למיקום הערך הנבחר ע"י ציון מקומו והמאפיין. הערך Ron Ben Bar מיקום 0 1 2 ערך מוצג רון בן בר נוכל לקבל את ערכו של כל איבר על-ידי ציון מיקומו ושימוש במאפיין valueבאופן הבא: מיקום במערך שם השדה שם הטופס document.tofes.MYlist.options[mikum].value נוכל להציג את הערך ולבצע עליו פעולות ,למשל: )alert(document.tofes.MYlist.options[mikum].value 132 JavaScript – èðøèðéà úáéáñá úåðëúì àåáî © 'úåðåìçì èáî'ì úåøåîù úåéåëæä ìë úììâð äîéùø :4 äøåúô äîâåã form_d.html בנה טופס המכיל אפשרויות לבחור בין 3סוגי סרטים .הבחירה הראשונה בטופס תציג ערך "בחר סוג" .לאחר בחירת הסרט ,יוצג למשתמש שם הסרט שבחר .אם לא נבחר סרט תרשם הודעה "בחר סוג". דוגמה פתורה דרך א :בחירה באחת האפשרויות המוצגות ברשימה תזמן את פונקצית הבדיקה >"<html dir="rtl ><head הטופס כפי שמוצג לגולש: >"<script language="javascript הטופס לאחר פתיחת הרשימה: לאחר הלחיצה על הכפתור "בדיקה": <!-הפונקציה bdikaבודקת את מיקום הערך הנבחר .אם מיקומו )(function bdika 0אזי לא נבחר סוג ,אחרת יוצג { סוג הסרט בחלון. ; var mikum ; mikum = document.tofes. movie.selectedIndex מיקום=)אינדקס( הערך שנבחר מתיבת הבחירה // )if (mikum ==0 אם ערך הבחירה 0אז נבחרה האפשרות הראשונה שבה לא הצבנו ערך // )"בחר סוג סרט"( alert else ; )alert (document.tofes. movie.options[mikum].value הערך= )תוכן( הנבחר בתיבת בחירה // } >//-- ></script ><title ></title ></head לחיצה על אחת מאפשרויות הבחירה ><body הכפתור תזמן פונקציה )(bdika >"<div align="rtl נסה לשנות בחירתך ,בחר סוג סרט >"<form name="tofes >")(<select name="movie" dir="rtl" onchange="bdika >-- </optionבחר סוג<option value="no_select" > -- > </optionקומדיה > "<option value="comedy > </optionדרמה >"<option value="drama > </optionדוקומנטרי >"<option value="documentary ></select ></form ></div ></body ></html דרך ב' :יש להגדיר כפתור "בדיקה" .לאחר הבחירה באחת האפשרויות המוצגות ברשימה יש ללחוץ על הכפתור לזימון פונקצית הבדיקה. JavaScript – èðøèðéà úáéáñá úåðëúì àåáî © 'úåðåìçì èáî'ì úåøåîù úåéåëæä ìë 133 checkbox - ïåîéñ úáéú äãù ú÷éãá בתיבת סימון ניתן לסמן מספר ערכים .לכל תיבה שם שונה וערך שונה. לבדיקת הערכים שבחר המשתמש נבדוק אם השדה נבחר ורק אח"כ נציג את הערך. בדיקה האם שדה מסוים נבחר ,ערך המאפיין checkedהוא true מבנה פנייה לערך בתיבת סימון checkbox ערך איבר כלשהו מהרשימה .checked ==trueשם השדה בטופס.שם הטופסdocument. form_e.html ïåîéñ úáéú :5 äøåúô äîâåã בבית מלון צריך לקוח לסמן אילו ארוחות ברצונו לקבל. נתון טופס המכיל 4תיבות סימון וכפתור בניית טופס המכיל תיבת סימון וכפתור התוצאה בדפדפן >"<form name="hotel > <brציין אילו ארוחות ברצונך לקבל > <brבוקר >"<input name="cbox1" type="checkbox" value="meal1 > <brצהריים >"<input name="cbox2" type="checkbox" value="meal2 > <brערב >"<input name="cbox3" type="checkbox" value="meal3 > <brלילה >"<input name="cbox4" type="checkbox" value="meal4 >")(" onclick="bdikaבדיקה"= <input type="button" value ></form כתוב פונקציה המציגה את הארוחות שסימן הלקוח )את הפונקציה זמן בלחיצת כפתור(. פתרון א': לכל אחד מהכפתורים שם שונה cbox1:מייצג ארוחת בוקר וערכו meal1וכו'.. אם נרצה להציג את כל הערכים שנבחרו ,נבדוק עבור כל שדה האם הוא נבחר ,אם כן נציג את ערכו מבנה הבדיקה עבור כל שדה: אם )הערך נבחר( הצג את ערכו ) (function bdika { if (document.hotel.cbox1.checked)= =true ;)alert(document. hotel.cbox1.value if (document.hotel.cbox2.checked)= =true ;)alert(document. hotel.cbox2.value if (document.hotel.cbox3.checked)= =true ;)alert(document. hotel.cbox3.value if (document.hotel.cbox4.checked)= =true ;)alert(document.hotel.cbox4.value } פתרון ב' :ניתן בטופס לתת לכל האיברים של תיבות הסימון שם זהה ואז נוצר אוסף תיבות סימון שפנייה אליהם כמו אל אברי מערך* ,ואז הסריקה מתבצעת בלולאה כמו בכפתורי רדיו ע"י ציון מיקומם!! * מערך הוא אוסף ערכים מאותו טיפוס שהגישה אליהם ע"י ציון שם המערך ומיקום האיבר מיקום שם המערך document.hotel.cbox[0].value 134 JavaScript – èðøèðéà úáéáñá úåðëúì àåáî © 'úåðåìçì èáî'ì úåøåîù úåéåëæä ìë íéñôè :àùåðá íéìéâøú את התרגילים הבאים שמור בתיקיה .js10_ formהוסף עבור כל תרגיל קישור מהדף הראשי js תרגיל :1שדה טקסט form1a.html א .צור את הטופס הבא בדוק שהשם המוקלד הוא שמך. אם לא הצג בתיבת הטקסט הודעה " נסה שוב!" .אם השם תקין רשום ברכה בחלון .alert form1b.html ב .צור טופס עם שני כפתורים ותיבת טקסט. רשום פונקציה )המופעלת בלחיצת כפתור( המקבלת תרגיל מתיבת הטקסט ומחזירה את תוצאת התרגיל בתיבת הטקסט .הנחייה :השתמש בשיטה ) (, evalראה עמוד .90 לחיצה על הכפתור השני תנקה את תיבת הטקסט. תרגיל :2מקצועות בחירה -רשימה נגללת form2.html תלמיד הנרשם לבית הספר "עתיד" צריך לבחור שני מקצועות בחירה שונים. צור טופס המכיל שתי רשימות מקצועות וכפתור בדיקה )ראה איור( בדוק האם נבחרו שני מקצועות שונים. הצג את המקצועות שנבחרו. form3.html תרגיל :3זכר או נקבה -כפתורי רדיו צור טופס המכיל שני כפתורי רדיו לסימון מגדר )זכר או נקבה( .בדוק שאחד הכפתורים סומן .אם לא הצג הודעה. תרגיל :4תרגילי חשבון -כפתורי רדיו form4.html בנה טופס המציג 4תרגילי חשבון .לכל תרגיל 3תשובות אפשריות .בחירת התשובה נכונה תתבצע בעזרת כפתורי רדיו. הטופס מכיל בנוסף כפתור "בדיקה" .לאחר מילוי השאלות לחיצה על כפתור הבדיקה תציג את התשובות הנכונות והציון. form5.html תרגיל :5תיבת סימון בנה את הטופס הבא ובדוק את העלות הכוללת של הארוחות שנבחרו ,ראה מחירון בטבלה. מחירון מחיר ארוחה 40 בוקר צהריים 100 80 ערב 40 לילה JavaScript – èðøèðéà úáéáñá úåðëúì àåáî © 'úåðåìçì èáî'ì úåøåîù úåéåëæä ìë 135