נושא: בדיקות קלט בג’אווה סקריפט לטופס לא עובדות
|
|
כותב |
|
עופר אורח
הצטרף / הצטרפה: 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 רשוּם
|
|
|
|
- יש בקוד הרבה (מאוד) בעיות...
- יותר מידי הערות מיותרות, חסרות הרבה סגירות } ו )
- 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> |
|
|
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|
|
|
אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם
|
אינך יכול/ה לשלוח נושאים חדשים בפורום זה אינך יכול/ה להגיב לנושאים בפורום זה אינך יכול/ה למחוק את הודעותיך ותגוביך בפורום זה אינך יכול/ה לערוך את הודעותיך ותגובותיך בפורום זה אינך יכול/ה לצור סקרים בפורום זה אינך יכול/ה להצביע בסקרים בפורום זה
|