שלח תשובה

זירת השאלות

733
צפיות
35
תשובות

מה לא תקין בפונקצייה הבאה?

,‏ 5 ביוני, 2005

יש לי טופס ובו שדה קלט ששמו מוגדר כ"Content" (<textarea name="content"</textare>.
כתבתי פונקציה בJS שתפקידה לבדוק כי הוקלד לפחות תו אחד לשדה הקלט, רק שהפונקציה לא עובדת…
זו הפונקציה שכתבתי:


  <script language="javascript">
  function FormChecker()
  {
    if (document.ContactUsForm.content.value.length !=0)
      {
        window.alert("לא הוזן תוכן הבקשה");
      }
  }
  </script>


מה לא בסדר פה??

תגיות:

35 תשובות

  1. BuildHome הגיב:

    ככה
    if(document.ContactUsForm.content.value.length==0)

    הגדרת אם מספר התווים שונה מאפס, כלומר שהוא כתב משהו ואז הצגת לו שגיאה לכתוב משהו. פה אתה צריך לראות אם מספר התווים שווה לאפס ולהציג את השגיאה.

  2. BINI הגיב:

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


    <a href="http://&quot; onclick="FormChecker();"><img border="0" src="imagesSend.gif"></a>

  3. BINI הגיב:

    ושאלה נוספת ברשותך…
    איך אני מגדיר שבנוסף לכך שחייב להיות להיות תו אחד בשדה הקלט – עליו גם להיות מספר? (רצוי שגם מקפים יאושרו כדי שניתן יהיה לכתוב בשדה קלט של מס' טלפון את הקידומת ולאחריה מקף)

  4. yarono הגיב:

    אתה צריך להוסיף return false
    עליך להוסיף:

    return false

    אחרי שהפונקציה מגלה שיש בעיה בהזנה.

    ורק כאשר הכל תקין:

    return true

    הנה דוגמה:


    function checksubmit()
    {
    proj=document.TaskDet.project
    type=document.TaskDet.ttype
    //pass2=document.register.password2

    if (proj.selectedIndex==0)
        {
        alert("Please select a project")
        proj.focus
        return false
        }
    if (type.selectedIndex==0)    
        {
        alert("please select a task type")
        type.focus
        return false
        }

        //document.register.regok.value="ok"
        return true
    }

  5. yarono הגיב:

    בתג ה – Form עליך להפנות לפונקציה
    שבודקת את שליחת הטופס, ראה דוגמה
    כמו כן עליך להוסיף בתג ה – Form את הקוד הבא:


    <form name="TaskDet" method="post" action="AddTask.asp" onSubmit="return checksubmit(this)">

  6. BuildHome הגיב:

    בעזרת RegExp
    <input type="text" size="20" name="phone" id="phone" OnKeyPress="return (/[0-9-]/.test(String.fromCharCode(event.keyCode)));">
    יאפשר להקליד אך ורק מספרים ומקף (-).

  7. BINI הגיב:

    המספרים והמקף עבד. בפונקציה הסתבכתי
    כתבתי כך את הפונקציה:


      function FormChecker()
      {
        if(document.ContactUsForm.garage.value.length==0)
          {
            window.alert("לא הוזן שם המוסך");
        return false
          }
        if(document.ContactUsForm.email.value.indexOf("@") == -1)
          {
            window.alert("כתובת אימייל שהוזנה אינה תקינה");
        return false
          }
        if(document.ContactUsForm.Phone.value.length==0)
          {
            window.alert("לא הוזן מס' טלפון");
        return false
          }
        if(document.ContactUsForm.content.value.length==0)
          {
            window.alert("לא הוזן תוכן הבקשה");
        return false
          }
        if(document.ContactUsForm.garage.value="ok")
          {
        return true
          }
        if(document.ContactUsForm.email.value="ok")
          {
        return true
          }
        if(document.ContactUsForm.Phone.value="ok")
          {
        return true
          }
        if(document.ContactUsForm.content.value="ok")
          {
        return true
          }
      }

    והפנתי את לחץ הסבמיט אליה כך:


    <a href="AddTask.asp" onclick="FormChecker();"><img border="0" src="imagesSend.gif"></a>

    אני יודע שההפנייה לדף הASP לא צריכה להיעשות בHREF פשוט לא ידעתי איך לעשות את זה…(אם אני עושה A ACTION אז הסמן של העכבר לא משתנה כאילו ה"שלח" הוא לינק כשעוברים עליו)

  8. BuildHome הגיב:

    מה הבעיה בפונקציה?
    חוץ מבעיה אחת שהיא ברורה. כדי להשוות נתונים כותבים פעמיים את הסימן שווה (=) ולא פעם אחת.

    תעשה משהו כזה:
    <img border="0" src="imagesSend.gif" style="cursor:hand;" OnClick="if(FormChecker()){location.href='AddTask.asp';};">

  9. BINI הגיב:

    עכשיו זה לא שולח לדף הASP
    הכל בעיקרון עובד מבחינת הפונקציה חוצמזה שכשכל הערכים מחזירים true – לחיצה על תמונת ה"שלח" לא גוררת שום תגובה…
    לדעתי זה בגלל שבקוד הבא לא כתוב שאם כל הערכים בפונקציה מחזירים true לשלוח לדף המבוקש אלא רק אם הפונקציה..:


    OnClick="if(FormChecker()){location.href='addTask.asp';};"

  10. BuildHome הגיב:

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

  11. BINI הגיב:

    הפונקציה עובדת. אבל זה לא שולח לדף
    כשאחד הערכים בפונקציה לא מחזיר "OK" אז היא באמת מתריעה על כך בהודעה ואי אפשר להמשיך הלאה עד שלא מתקנים מה שצריך. אבל הבעיה שאחרי שכל הטופס ממולא כמו שצריך, לחיצה על ה"שלח" פשוט לא גוררת שום תגובה…
    כך כתובה הפונקציה:


      function FormChecker()
      {
        if(document.ContactUsForm.garage.value.length==0)
          {
            window.alert("לא הוזן שם המוסך");
        return false
          }
        if(document.ContactUsForm.email.value.indexOf("@") == -1)
          {
            window.alert("כתובת אימייל שהוזנה אינה תקינה");
        return false
          }
        if(document.ContactUsForm.Phone.value.length==0)
          {
            window.alert("לא הוזן מס' טלפון");
        return false
          }
        if(document.ContactUsForm.content.value.length==0)
          {
            window.alert("לא הוזן תוכן הבקשה");
        return false
          }
        if(document.ContactUsForm.garage.value=="ok")
          {
        return true
          }
        if(document.ContactUsForm.email.value=="ok")
          {
        return true
          }
        if(document.ContactUsForm.Phone.value=="ok")
          {
        return true
          }
        if(document.ContactUsForm.content.value=="ok")
          {
        return true
          }
      }

    וכך כתובה השורה של ה"שלח" (שאמרת שצריכה לעבוד):


    <img border="0" src="imagesSend.gif" style="cursor:hand;" OnClick="if(FormChecker()){location.href='addTask.asp';};">

    ולשאלתך אם קראתי את המדריך – קראתי ספר על הנושא שאני מאמין שנותן הסברים יותר מפורטים ומעמיקים מהמדריך 🙂

  12. BuildHome הגיב:

    תבדוק איזה ערך מחזירה הפונקציה
    FormChecker ותראה אם זה true/false.
    למשל במקום משפט תנאי תעשה הודעת אלרט.

  13. BINI הגיב:

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

  14. Silver Strike הגיב:

    אתה יכול לתת לו class ולהחיל את…
    השינויים עליו.

  15. BINI הגיב:

    מצ"ב הקוד
    לא בטוח שהבנתי מה היתה הכוונה עם class…

    A:link {
        COLOR: "white"
    }

  16. BuildHome הגיב:

    איך ניסית להגדיר לו צבע אחר?
    <a href="https://www.webmaster.org.il&quot; style="color:blue;">קישור בצבע כחול</a>

  17. Silver Strike הגיב:

    כאשר אתה מגדיר בורר ב-CSS…
    אתה יכול להשתמש בשם האלמנט:
    a:link {color:white;}
    או בהפנייה ל-ID:
    #linkage:link {color:white;}
    או בהפנייה ל-class:
    .linkage:link {color:white;}

    הגדרת id ו-class בקוד ה-HTML:
    <a href="" id="linkage" class="linkage"></a>

    הדרך בה הגדרת את ה-CSS אינה נכונה. (ראה דוגמאות).

  18. BINI הגיב:

    אני חייב לציין…
    שאתם ממש תותחים…כל בעיה אתם פותרים לי…אני שואל את המורה שלי ועם כל הרצון הטוב שלה, כל דבר שנוטה לקצת מורכבות היא מסתבכת…
    מה שכן עכשיו התחלתי ASP…נקווה לטוב…

  19. BINI הגיב:

    מקווה שלא נמאסתי עם כל השאלות…
    איך אני עושה שבמעבר עכבר על לינק הסמן לא ישתנה לאצבע המצביעה הזאת?
    ואיך אני בוחר מה יהיה כתוב בשורת המצב במעבר עכבר על לינק?

    שוב תודה..

  20. BuildHome הגיב:

    אלה דברים בסיסיים ופשוטים
    OnMouseOver="this.style.cursor='text';"

    OnMouseOver="status='טקסט';return true;" OnMouseOut="status=";return true;"

  21. BINI הגיב:

    כשלומדים Html, JS, ASP בחודש אחד…
    אי אפשר לדעת כבר בשלב הראשוני את כל הדקויות בשפות הללו…
    בכל מקרה, הסמן הופך לסמן של טקסט, ואני רוצה שהוא פשוט יישאר רגיל…סמן עכבר.
    בקשר לשורת המצב לא הבנתי מה קשורים ה"return true" (ובכל מקרה זה לא עבד לי).

  22. BuildHome הגיב:

    תשנה ל-default
    הקוד הזה עובד 100%. הערך המוחזר הוא כדי בעצם באמת לבצע בעת האירוע.

  23. BINI הגיב:

    עדיין לא עובד לי…
    את הקוד יש להכניס בתגית <a> הבנתי נכון? אני הכנסתי ככה:


    <a href="webmaster.co.il" OnMouseOver="status='לאתר וובמסטר';return true;" OnMouseOut="status=";return true;">וובמסטר</a>

  24. BINI הגיב:

    סליחה זה הקוד שלא עובד


    <a href="AE.html" OnMouseOver="status=";return true;" OnMouseOut="status=";return true;" target="_top" OnMouseOver="this.style.cursor='default';"><img border=0 src=Images/logo.jpg></A>

  25. BINI הגיב:

    השורת מצב עובדת, אבל
    הסמן עכבר הופך לאצבע המצביעה כשעוברים על התמונה

  26. somebody הגיב:

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


    cursor:default;

    זה ישאיר את סמן העכבר בצורת בררית המחדל שלו.

  27. BINI הגיב:

    אני לא רוצה שזה יהיה בכל הלינקים…
    רק בלינק ספיציפי

  28. BuildHome הגיב:

    תשובה
    עשית פעמיים OnMouseOver בקישור. שים לב מה אתה עושה ואל תעתיק – זו אף פעם לא הדרך הנכונה ללמוד.

  29. BINI הגיב:

    אני אמור לכתוב כך?


    <a href="AE.html" OnMouseOver="status=";return true; this.style.cursor='default';" OnMouseOut="status=";return true;"

  30. BINI הגיב:

    זה לא עובד…
    ויש אולי דרך להגדיר בCSS שהשורת מצב לא תציג כלום??

  31. BuildHome הגיב:

    עובד
    אתה שואל שאלות בסיסיות מדי. כדאי שתפנה זמן ותלמד את מדריך ה-JS ו-CSS באתר.
    אגב, התשובה בקוד שכתבת.

  32. BINI הגיב:

    לא עובד
    נראה לך שבאתי לשחק פה משחקים??
    אני כותב את הקוד הבא ואמנם השורת מצב היא כמו שאני רוצה, אבל הסמן משתנה לסמן של לינק כשעוברים מעל הלינק:


    <a href="AE.html" OnMouseOver="status=";return true; this.style.cursor='default';" OnMouseOut="status=";return true;">לינק</a>

  33. BuildHome הגיב:

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

שלח תשובה