שלח תשובה

זירת השאלות

490
צפיות
13
תשובות

עזרה בבקשה…

,‏ 26 בנובמבר, 2004

כתבתי את הפונקציה הבאה:


function check()
{
  var err;
  
  err="השגיאות שלך הן:"

  if (GetElementById('username')=="")
  {
    err=err+ "לא הזנת שם משתמש"
  }
  
  if (GetElementById('password')=="")
  {
    err=err+ "n לא הזנת סיסמא"
  }
  
  if (GetElementById(’emial')=="")
  {
    err=err+ "n לא הזנת כתובת דואר אלקטרוני"
  }

  if (GetElementById('siteadd')=="http://")
  {
    err=err+ "n לא הזנת את כתובת אתרך"
  }

  if (GetElementById('tiur')=="")
  {
    err=err+ "n אתרך לא מתואר"
  }
  if (GetElementById('username')!="" && GetElementById('tiur')!="" && GetElementById('siteadd')!="http://" && GetElementById(’emial')!="" && GetElementById('password')!="")
  {
    err=""
  }

  if (err!="")
  {
    alert(err)
  }
  else
  {
    return false;
  }
}


עכשיו הכל טוב ויפה… ואין שום שגיאה…
אבל הגדרתי את הכפתור של שליחת הטופס ככה:


<input type="submit" name="send" value="שלח" onclick="check();">


אבל הבעיה… שהוא לא בודק את הטופס…. כלומר גם אם כל השדות רייקים הוא ממשיך האלה ולא אומר כלום….
יש למישהו רעיון למה??

תודה מראש לעוזרים…

.נב לא שירשרתי כי זה לא הקפיץ…

תגיות:

13 תשובות

  1. BuildHome הגיב:

    שימוש שגוי
    אתה צריך להשתמש במשהו כזה עבור בדיקת ערכי טופס:
    if(document.getElementById("username").value=="")
    או
    if(document.formName.username.value=="")

    formName = שם הטופס המוגדר בתגית form.

  2. iliakap2002 הגיב:

    הוספתי VALUE ועדיין
    הוספתי VALUE ו DOCUMENT אבל זה עדיין לא בודק את זה…
    וזה לא הפעם הראשונה שאני נתקל בשגיאה הזו…

    וגם…
    אני כל הזמן רואה שאנשים מוותרים על האןבייקט DOCUMENT וזה פועל…

  3. BuildHome הגיב:

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

  4. iliakap2002 הגיב:

    תודה רבה!!! ועוד דבר אחד אם אפשר…

  5. iliakap2002 הגיב:

    הדבר…
    עשיתי שזה יעלה הודעת שגיאה….
    ויגיד איזה תאים למלא…

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

    תודה מראש…. איליה…

  6. BuildHome הגיב:

    תשובה
    שנה את משפט התנאי שלך בפונקציה לזה:
      if(err!="") {
        return false;
        alert(err);
      }
      else
        return true;

    בטופס אתה צריך להוסיף את בדיקת הטופס ולא בכפתור.
    <form action="page.asp" method="post" OnSubmit="return check(this);">

  7. iliakap2002 הגיב:

    ובקשר לשאלה השנייה שלי…
    זה בכלל אפשרי???
    כי אני רואה באתרים…

  8. BuildHome הגיב:

    אפשרי
    תוסיף dir=rtl בתגית ה-HTML.
    <html dir="rtl">

  9. iliakap2002 הגיב:

    תודה רבה לך!!!
    יש לי משהו מוזר פה…
    פונקציה: (תודה לבילד)


    <script language="JavaScript">
    function check()
    {
      var err;
      
      err="השגיאות שלך הן:";

      if (document.reg.username.value=="")
      {
        err=err+ "n לא הזנת שם משתמש";
      }
      
      if (document.reg.password.value=="")
      {
        err=err+ "n לא הזנת סיסמא";
      }
      
      if (document.reg.email.value=="")
      {
        err=err+ "n  לא הזנת כתובת דואר אלקטרוני";
      }

      if  (document.reg.email.value.indexof('@')==0)
      {
        err=err+ "n כתובת דואר לא תקינה"

      if (document.reg.siteadd.value=="")
      {
        err=err+ "n לא הזנת את כתובת אתרך";
      }

      if (document.reg.banner.value=="")
      {
        err=err+ "n לא העלת באנר";
      }

      if (document.reg.description.value=="")
      {
        err=err+ "n אתרך לא מתואר";
      }

      if ((document.reg.username.value!="") && (document.reg.tiur.value!="") && (document.reg.siteadd.value!="http://&quot😉 && (document.reg.email.value!="") && (document.reg.password.value!="") && (document.reg.email.value.indexof('@')!=0))
      {
        err="";
      }

      if (err!="")
      {
        alert(err);
        return false;
      }
      else
    {
      return true;
      }
    }
    </script>

    אבל משום מה אם אני מזין רק שם משתמש או רק אימייל (גם אם הוא לא נכון) אני לא מקבל את ה ALERT…

    ובכל השאר אני מקבל…
    למה זה???

  10. BuildHome הגיב:

    משפט התנאי
    הזה
      if ((document.reg.username.value!="") && (document.reg.tiur.value!="") && (document.reg.siteadd.value!="http://&quot😉 && (document.reg.email.value!="") && (document.reg.password.value!="") && (document.reg.email.value.indexof('@')!=0))
      {
        err="";
      }

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

    בנוסף, הייתי עושה את משפטי התנאי בשרשור מתאים לפי משפט התנאי שלפניו, למשל:
    if(something=="")
           err += "n msg";
    else {
           if(something2=="")
                  err += "n msg";
           else {
                  if(something3=="")
                         err += "n msg";
                  else {
                         if(err=="")
                                return true;
                         else {
                                alert(err);
                                return false;
                         }
                  }
           }
    }

  11. iliakap2002 הגיב:

    אופס… ברח לי האנטר… אתה לא צודק
    שים לב למה שווה ERR בהתחלה….

  12. BuildHome הגיב:

    אז זה לא צריך להיות כך
    אתה צריך להוסיף את המשפט הזה בתוך ה-alert.

    בכל מקרה, עדיף להשתמש בשרשור משפטי תנאי (לא קשור ל-err אלא בכלליות).

שלח תשובה