שלח תשובה

זירת השאלות

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

בעיה בסקריפט לוידוא שדות בטופס

,‏ 31 במאי, 2005

הסקריפט שלי בודק אם שדות הטקסט full_name ו- email נשארו ריקים בעת שליחת הטופס. אם כן, הוא יחזיר אלרט.
הבעיה שלי היא שלאחר החזרת האלרט, הוא שולח את הטופס (ממשיך את הפעולה).
כיצד אני עוצר את הפעולה אם יש אלרט?



<SCRIPT LANGUAGE="JavaScript">

<!– Begin
function verify() {
var themessage = "עלייך להשלים את השדות הבאים: ";
if (document.form1.full_name.value=="") {
themessage = themessage + " – שם מלא";
}
if (document.form1.email.value=="") {
themessage = themessage + " –  כתובת אימייל";
}
//alert if fields are empty and cancel form submit
if (themessage == "עלייך להשלים את השדות הבאים: ") {
document.form1.submit();
}
else {
alert(themessage);
return false;
   }
}
//  End –>
</script>

………(הטופס)
<input type="submit" name="submit" value="השלם הצטרפות"  onclick="verify();">


תגיות:

7 תשובות

  1. BuildHome הגיב:

    פשוט מאוד
    תחזיר true או false מהפונקציה (אתה בינתיים מחזיר רק false) ותוסיף את בקשת הפונקציה בתגית הטופס ולא בכפתור השליחה:
    onsubmit="return verify();"

  2. prince01 הגיב:

    לא מובן לי
    במידה והשדות ריקים, הוא מחזיר אלרט וfalse. לא הבנתי איפה אני צריך לשנות   .
    ואת הonclick העברתי לתגית הform כ-onsubmit.
    עדין לא עובד 🙁

  3. Silver Strike הגיב:

    [ללא נושא]
    בנתיים אתה מחזיר רק false. אתה צריך ליצור התנייה, מה לעשות כאשר הנתונים נכונים. (return true)

    <input type="submit" name="submit" value="השלם הצטרפות"  onclick="return verify();">

  4. prince01 הגיב:

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

  5. BuildHome הגיב:

    ככה
    document.form1.submit(); => return true;

    <form action="page.asp" method="post" name="form1" onsubmit="return verify();">
    [הטופס]
    <input type="submit" name="submit" value="השלם הצטרפות">
    </form>
    אמור לעבוד חלק.

  6. prince01 הגיב:

    כן, בהחלט אמור לעבוד חלק
    אבל משום מה על השרת הזה זה לא עובד טוב בכלל.
    document.form1.submit();
    עושה פעולה זהה לreturn true ולכן אני לא מבין היכן הבעיה.

  7. BuildHome הגיב:

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

שלח תשובה