נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
בניית אתרים
RSS UnderWarrior Forums : RSS בניית אתרים
נושא

נושא: בדיקות קלט בג’אווה סקריפט לטופס לא עובדות

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
עופר
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 17 April 2007 בשעה 19:21 | IP רשוּם
ציטוט עופר

שלומות לכולם.

הבעייה שגם כשאני מכניס מידע שגוי לטופס הוא עדיין נשלח, ולא מופיעה לי גם שום הודעת ALERT.

ועוד שאלה, כתבתי טוב את החלק בפונקצייה שבודק את הגיל?

תודה מראש על העזרה, הנה הקוד:
קוד:

<html>
<head>
<script language="javascript">
    function checkForm(form)
    {
    var valid=true, msg = "", i=0, validchars=true;
    //Check Username
        //Check if username empty
        if(form.username.value="")
            {
                valid=false;
                msg = msg + "You didn't enter a username.\n";
            }
    //Check Age
        //Check if there's a non numeric char in the field
        var age=form.age.value;
        for(i=0;i<age.length;i++)
        {
        if( !(age[i] >= '0' && age[i] <= '9'))
            {
                valid=false;
                msg = msg + "You're age contains non-numbers\n.";
            }
        //Check if age number is logical
        if(age < 1 || age > 120)
        {
            valid=false;
            msg=msg + "Please enter an age between 1 and 120.\n";
        }
       
    //Check password
        //Check if password is empty
        if(form.password.value="")
            {
                valid=false;
                msg = msg + "You didn't enter a password.\n";
            }
        //Check if passwords match
        if(form.password.value != form.confirm_password.value)
            {
                valid=false;
                msg = msg + "The passwords you entered don't match";
            }
    //Check e-mail
        mail = form.mail.value;
        //Check if mail is empty
        if(mail=="")
            {
                valid=false;
                msg = msg + "You didn't enter an e-mail";
            }       
        else
            {
                //Check if there's '@' in the email entered
                if(mail.indexOf('@') == -1)
                    {
                    valid=false;
                    msg = msg + "The email you entered is invalid";
                    }
                else
                    {
                        //Check all chars are either numbers, letters, '.', or '@'   
                        for(i=0;i<mail.length;i++)
                        {
                            if( !( (mail[i] >= '0' && mail[i] <= '9')
                            || (mail[i] >= 'a' && mail[i] <= 'z')
                            || (mail[i] >= 'A' && mail[i] <= 'Z')
                            || (mail[i] == '.'
                            || (mail[i] == '@')
                                { validchars=false; }
                        }
                        if( validchards==false
                        //Check if the last char before '@' is valid and the char after it is valid
                        ||    mail[indexOf('@')+1] =="."
                        //Check that there's a dot after '@', and that it's followed by something
                        ||    indexOf('.', indexOf('@')) == 1
                        ||    indexOf('.', indexOf('@') == (mail.length-1)
                        //Check the first char is not a dot or '@'
                        || indexOf('.') == 0
                        || indexOf('@') == 0)
                             {
                                valid=false;
                                msg = msg + "The e-mail you entered is invalid.\n";
                            }   
                   
        alert(msg);
        return valid;
    }
    </script>
</head>
<body>
        <form action="register_act.asp" method="post" name="regForm" onsubmit="javascript:checkForm(this);">
            <table>
                <tr>
                    <td>Username: </td>
                    <td><input type="text" name="username"></td>
                </tr>
                <tr>
                    <td>Age: </td>
                    <td><input type="text" name="age"></td>
                <tr>
                    <td>Password: </td>
                    <td><input type="text" name="password"></td>
                </tr>
                <tr>
                    <td>Password Again: </td>
                    <td><input type="text" name="confirm_password"></td>
                </tr>
                <tr>
                    <td>E-Mail: </td>
                    <td><input type="text" name="mail"></td>
                </tr>
                <tr>
                    <td><input type="reset" name="reset"></td>
                </tr>
                <tr>
                    <td><input type="submit" name="submit" value="Register!" onsubmit="javascript:checkForm();"></td>
                </tr>
            </table>
        </form>
</body>
</html>


:)
חזרה לתחילת העמוד הצג את כרטיס החבר של עופר חפש הודעות אחרות של עופר בקר בדף הבית של עופר
 
shoshan
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 16 July 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 4637
נשלח בתאריך: 17 April 2007 בשעה 19:53 | IP רשוּם
ציטוט shoshan

  • יש בקוד הרבה (מאוד) בעיות...
  • יותר מידי הערות מיותרות, חסרות הרבה סגירות } ו )
  • indexOf עובדת כך: mystr.indexOf
  • כשרוצים לבטל שליחה של טופס צריך לעשות באירוע של השליחה return false
  • (חלק מהולידציות השונות שנויות במחלוקת מבחינה לוגית)
  • והקוד לא תקין
הפתרון שצירפתי פותר רק חלק מהבעיות ככה שיספיק לך לבגרות (:
(מזהים שזה לבגרות?)

קוד:
<html>
<head>
<script language="javascript">
function checkForm(form)
{
    var valid=true, msg = "", i=0, validchars=true;
    if(form.username.value="")
    {
        valid=false;
        msg = msg + "You didn't enter a username.\n";
    }
    var age=form.age.value;
    for(i=0;i<age.length;i++)
        if( !(age[i] >= '0' && age[i] <= '9'))
        {
            valid=false;
            msg = msg + "You're age contains non-numbers\n.";
        }
    if(age < 1 || age > 120)
    {
        valid=false;
        msg=msg + "Please enter an age between 1 and 120.\n";
    }
    if(form.password.value="")
    {
        valid=false;
        msg = msg + "You didn't enter a password.\n";
    }
    if(form.password.value != form.confirm_password.value)
    {
        valid=false;
        msg = msg + "The passwords you entered don't match";
    }
    mail = form.mail.value;
    if(mail=="")
    {
        valid=false;
        msg = msg + "You didn't enter an e-mail";
    }
    else
    {
        if(mail.indexOf('@') == -1)
        {
            valid=false;
            msg = msg + "The email you entered is invalid";
        }
        else
        {
            for(i=0;i<mail.length;i++)
            {
                if( !( (mail[i] >= '0' && mail[i] <= '9')
                         || (mail[i] >= 'a' && mail[i] <= 'z')
                         || (mail[i] >= 'A' && mail[i] <= 'Z')
                         || (mail[i] == '.')
                         || (mail[i] == '@') ) )
                { validchars=false; }
            }
            if( validchards == false || mail[mail.indexOf('@')+1] =="." || mail.indexOf('.', mail.indexOf('@')) == 1 ||
                    mail.indexOf('.', mail.indexOf('@')) == (mail.length-1) || mail.indexOf('.') == 0 || mail.indexOf('@') == 0)
            {
                valid=false;
                msg = msg + "The e-mail you entered is invalid.\n";
            }
        }
    }
    if (!valid)
        alert(msg);
    return valid;
}
    </script>
</head>
<body>
        <form action="register_act.asp" method="post" name="regForm" onsubmit="return checkForm(this);">
            <table>
                <tr>
                    <td>Username: </td>
                    <td><input type="text" name="username"></td>
                </tr>
                <tr>
                    <td>Age: </td>
                    <td><input type="text" name="age"></td>
                <tr>
                    <td>Password: </td>
                    <td><input type="text" name="password"></td>
                </tr>
                <tr>
                    <td>Password Again: </td>
                    <td><input type="text" name="confirm_password"></td>
                </tr>
                <tr>
                    <td>E-Mail: </td>
                    <td><input type="text" name="mail"></td>
                </tr>
                <tr>
                    <td><input type="reset" name="reset"></td>
                </tr>
                <tr>
                    <td><input type="submit" name="submit" value="Register!" onsubmit="javascript:checkForm();"></td>
                </tr>
            </table>
        </form>
</body>
</html>



__________________
עד מתי רשעים יעלוזו?

עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
חזרה לתחילת העמוד הצג את כרטיס החבר של shoshan חפש הודעות אחרות של shoshan בקר בדף הבית של shoshan
 

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

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