שלח תשובה

זירת השאלות

435
צפיות
19
תשובות

מצטער שאני מציף את הפורום בבעיות

,‏ 14 בפברואר, 2004

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

אני לא רוצה שהשדה ICQ שלי יהיה שדה חובה. עם זאת, אני רוצה שאם המשתמש הקליד משהו זה יבדוק אם הוא הקליד את המספר ICQ כמו שצריך (רק מספרים, בדיוק 9 ספרות וכו') .הנה הבדיקה:




if (icq.length !=9){
alert('מספר ICQ חייב להיות בדיוק 9 ספרות')
document.SignUp.ICQ.focus()
flag=false
return
}else{
if(isNaN(icq) == true){
alert("טעות בשדה ICQ.הקלדת אותיות היכן שצריך להקליד מספרים")
document.SignUp.ICQ.focus()
flag=false
return
}
}



עכשיו, אם המשתמש לא הקליד כלום בשדה ICQ זה עדיין יציג לא alert –> "מספר ICQ חייב להיות בדיוק 9 ספרות" כי הבדיקה שעשיתי זה אם השדה ICQשונה מ-9 הוא יציג אלרט ואם המשתמש לא הקליד כלום זה נחשב שונה מ-9 כמובן. מה לעשות? איך אני אוכל לגרום לכך שהתוכנית לא תציג אלרט אם המשתמש לא הקליד כלום…

תגיות:

19 תשובות

  1. סטימפי הגיב:

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

    לפני כשבוע כמדומני עשית לי כמה תיקונים לבדיקת אי-מייל ולא ממש הבנתי אותם.

    הנה הלינק:
    https://www.webmaster.org.il/forums/Message.asp?Id=3901

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

  2. זהר פלד הגיב:

    אז ככה:
    במצב שבו הנקודה האחרונה מופיעה מיד אחרי התו @, הערך של המשתנה intLastDotLocation יהיה הערך של המשתנה intLastDotLocation+1.
    מכיון שאתה חייב לפחות תו אחד בין ה @ לנקודה שאחריו, הוספתי לתנאי 2+.

    עכשיו זה ברור?

  3. סטימפי הגיב:

    מצטער על ההטרדה, אני לא רוצה להפריע
    אבל מישהו מוכן להגיד לי מה לא טוב בסקריפט הזה?


    sChar = Username.charAt(0)
    if ((sChar<"A")||(sChar>"Z")) {
    alert("שם המשתמש חייב להתחיל באות אנגלית")
    document.SignUp.Username.focus()
    flag=false
    return
    }

    עשיתי את הבדיקה הזאת לשם משתמש שהאות הראשונה בשדה תהיה חייבת להיות אות אנגלית אז עשיתי את התחום שבין A ל -Z ואין לי מושג למה זה לא עובד.תודה מראש למי שיודע.

  4. סטימפי הגיב:

    פחות או יותר אך לא 100%
    אם תיתן דוגמא זה יהיה לי יותר ברור אם זה לא יהיה טרחה גדולה מדי.

  5. זהר פלד הגיב:

    הנה דוגמא.
    הקובץ המצורף הוא אותו סקריפט, משופר במקצת.
    הודעות השגיאה עכשיו יותר מפורטות, ואם תשים לב, תראה שבתנאי שלא ברור לך הוספתי עוד alert אחד, שאומר לך מה מכילים שני המשתנים שמופיעים בו.
    נסה להכניס כתובת דוא"ל שבה הנקודה מופיעה מיד אחרי ה @, ונסה להכניס כתובת שבה מופיעה הנקודה תו אחד אחרי ה @.

  6. סטימפי הגיב:

    רגע
    "…יהיה הערך של המשתנה intLastDotLocation+1."

    אתה בטוח שלא התכוונת כאן ל – intAtLocation?

  7. זהר פלד הגיב:

    התפלק לי ה copy הלא נכון ל paste…
    אכן התכוונתי ל intAtLocation.

  8. זהר פלד הגיב:

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

  9. סטימפי הגיב:

    תודה רבה לך זוהר
    הבנתי את זה בצורה מושלמת.

  10. סטימפי הגיב:

    בעצם כנס
    שוב הבדיקה:

    sChar = Username.charAt(0)
    if ((sChar<"A")||(sChar>"Z")) {
    alert("שם המשתמש חייב להתחיל באות אנגלית")
    document.SignUp.Username.focus()
    flag=false
    return
    }

    עכשיו תשמע, הבדיקה הזו פועלת ובודקת לי אם האות הראשונה היא אות .באנגלית יפה אבל רק אותיות גדולות באנגלית ולא קטנות. זה אולי ישמע מצחיק אבל כבר פתרתי לי את הבעיה, פשוט הוספתי את השיטה toUpperCase() ככה שכאשר המשתמש יקליד אות קטנה באנגלית("a") הוא ישר יהפוך אותה ל-
    ("A") ואז הבדיקה תהיה תקפה גם אם הוא הכניס אות שהיא קטנה באנגלית. עניתי לעצמי חחח

  11. סטימפי הגיב:

    חומר תיאורטי
    מישהו יודע מה עושה המילה השמורה javascript עם ":"

    לדוגמא:


    onclick="javascript:myFunction()"

    מישהו יודע?

  12. זהר פלד הגיב:

    במקרה הזה, היא מיותרת.
    השימוש בה צריך להיות, אם כבר, אך ורק בתור ערך של המאפיין href של לינק:

    <a href="javascript:func()"> bla bla </a>

    מה שהיא עושה בעצם זה אומרת לדפדפן שבמקום לגשת ל URL, הוא צריך לגשת לפונקציה של javascript שנקראת func.

    ד"א, לא מומלץ להשתמש בלינק כדי לבצע דבר כזה. עדיף להשתמש במיכל כלשהו (span או div, לדוגמא) שיקרא לביצוע של javascript ב onClick. אם אתה ממש רוצה שזה יראה כמו לינק, זה לא בעיה בכלל ב css לגרום לתוכן של תג להראות כמו לינק.

  13. ניר טייב הגיב:

    בימינו…
    עובדים עם דבר כזה רק בקישורים (למיטב ידיעתי)
    כדי לקרוא לפונקציה דרך אירוע פשוט כותבים את שם הפונקציה עם סוגריים שבתוך הסוגריים (אם יש) כותבים פרמטרים מתאימים וזהו !!!

  14. זהר פלד הגיב:

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

  15. זהר פלד הגיב:

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

  16. סטימפי הגיב:

    אני מסכים איתך שהשאלה הספציפית
    הזאת הייתה מיותרת

  17. סטימפי הגיב:

    כנס!
    אני יודע למה אתה מתכוון(אני חושב בעצם שאני יודע)

    ככה:


    if (icq == ""){
    flag=true
    return
    }

    ניסיתי את זה וזה לא עובד…

  18. זהר פלד הגיב:

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

    flag=true
    return

    כשאפשר פשוט לכתוב return true ולגמור סיפור בשורה אחת.
    הכיון של תנאי הוא אכן נכון, אבל הכוונה שלי היתה טיפה אחרת:

    // if the user entered an ICQ number
    if(icq.length>0) {
    if (icq.length !=9){
    alert('מספר ICQ חייב להיות בדיוק 9 ספרות')
    document.SignUp.ICQ.focus()
    flag=false
    return
    }else{
    if(isNaN(icq) == true){
    alert("טעות בשדה ICQ.הקלדת אותיות היכן שצריך להקליד מספרים")
    document.SignUp.ICQ.focus()
    flag=false
    return
    }
    }
    }

  19. סטימפי הגיב:

    תודה רבה זוהר
    וה – flag=true/false
    זה בשביל …

    if (flag == true)
    document.SignUp.submit()

    }

    לילה טוב

שלח תשובה