By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
435,135 Members | 1,184 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 435,135 IT Pros & Developers. It's quick & easy.

Error:object expected

P: 3
Good afternoon, I 've got the followin code to validate a form, and get the "error:object expected (line 171 char. 1, line 172, char 2)" even if i tried to solve it (parentheses, function syntax etc).
Can someone help, its a university homework that has to be delivered by Wednesday! (the first two buttons are name and surname in greek language, ignore the rest)
Here 's the code: (I've marked bold the lines that are the problem)

[HTML]<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

<title>Form validation</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script language="Javascript">
// Η συνάρτηση αυτή καλείται για να καθορίσει την εμφάνιση ώρας και ημερομηνίας στο status bar
function dttm()
{
var days=new Array("Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτ η","Παρασκευή","Σάββατο");
var mons=new Array("Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλι ος","Μάιος","Ιούνιος", "Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Ν οέμβριος","Δεκέμβριος");
sys_date=new Date();
sys_dd=sys_date.getDate();
sys_mm=sys_date.getMonth();
sys_yyyy=sys_date.getYear();
sys_hours=sys_date.getHours();
sys_mins=sys_date.getMinutes();
sys_secs=sys_date.getSeconds();
sys_day=sys_date.getDay();
sys_w_day=days[sys_day];
sys_w_mon=mons[sys_mm];
disp_time=sys_hours+":"+sys_mins+":"+sys_secs;
window.status="Σήμερα είναι "+sys_w_day+" "+sys_w_mon+" "+sys_dd+","+sys_yyyy+". Η ώρα είναι: "+disp_time;
setTimeout("dttm()",1000);
}
</script>

<script type="text/javascript">
// Η συνάρτηση αυτή καλείται κάθε φορά που γίνεται κλικ στο πλήκτρο 'Submit'
function Validate() {
// Αν ισχύουν οι παρακάτω 3 προϋποθέσεις τότε η φόρμα συμπληρώθηκε σωστά
if (checkIfEmpty()==true && checkEmail()==true && checkPhone()==true) {
alert ('Η φόρμα συμπληρώθηκε σωστά!')
return true;
}
else
return false;
}

// Ελέγχει κατά πόσο υπάρχει έστω κι ένα πεδίο κενό
function checkIfEmpty() {
if(sirname.value=="" || name.value=="" || email.value=="" || telephone.value==""
|| username.value=="" || password.value=="" || passwordmore.value=="") {
window.alert("Παρακαλώ συμπληρώστε όλα τα πεδία!");
return(false);
}
else
return(true);
}

// Ελέγχει κατά πόσο συμπληρώθηκε σωστά το πεδίο 'email' (αν περιλαμβάνει τουλάχιστον τους χαρακτήρες '@' και '.')
function checkEmail() {
var i=0;
var pap = false;
var dot = false;
var emailExp = false;
var mail = email.value;
for(i=0;i<mail.length;i++) {
if(mail.charAt(i)=="@")
pap=true;
if(mail.charAt(i)==".")
dot=true;
if(mail.match(emailExp)=="/^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/")
emailExp=true;
}

if(dot==true && pap==true && emailExp==true;)
return true;
else {
alert("Λάθος email!");
return false;
}
}

// Ελέγχει κατά πόσο συμπληρώθηκε σωστά το πεδίο 'telephone' (αν περιλαμβάνει αποκλειστικά αριθμητικούς χαρακτήρες)
function checkPhone() {
var i=0;
var okk=false;
var phone = telephone.value;
for(i=0;i<phone.length;i++) {
if(parseInt(phone.charAt(i))>=0 && parseInt(phone.charAt(i))=10 )
ok=true;
else {
window.alert("Λάθος τηλέφωνο!");
ok = false;
break;
}
}
return ok;
}
</script>
<meta name="Microsoft Border" content="t, default">
</head>

<BODY onLoad="dttm();"><!--msnavigation--><table border="0" cellpadding="0" cellspacing="0" width="100%"><tr><td>

<p align="center"><font size="6" color="#666666"><strong>
</strong></font><br>
</p>
</td></tr><table dir="ltr" border="0" cellpadding="0" cellspacing="0" width="100%"><tr><!--msnavigation--><td valign="top">

<table border="0">
<tr>
<td height="51" colspan="2"><div align="center">
<p><b>Φόρμα καταχώρησης στοιχείων</b></p>
</div></td>
</tr>
<tr>
<td width="155" bgcolor="#9999FF">Όνομα:</td>
<td width="144"><input type="text" name="name"></td>
</tr>
<tr>
<td bgcolor="#9999FF">Επώνυμο:</td>
<td><input type="text" name="sirname"></td>
</tr>
<tr>
<td bgcolor="#9999FF">E-mail:</td>
<td><input type="text" name="email"></td>
</tr>
<tr>
<td bgcolor="#9999FF">Τηλέφωνο:</td>
<td><input type="text" name="telephone"></td>
</tr>
<tr>
<td bgcolor="#9999FF">Όνομα χρήστη(username):</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td bgcolor="#9999FF">Συνθηματικό(password):</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td bgcolor="#9999FF">Επανάληψη Συνθηματικού:</td>
<td><input type="password" name="passwordmore"></td>
</tr>
<tr>
<td bgcolor="#9999FF">Φύλλο:</td>
<td><p>
<label>
<input name="sex" type="radio" value="radio">
Άνδρας</label>
<br>
<label>
<input type="radio" name="sex" value="radio">
Γυναίκα</label>
<br>
</p></td>
</tr>
<tr>
<td bgcolor="#9999FF">Κατάσταση:</td>
<td><select name="situation">
<option>Ανήλικος</option>
<option>Άγαμος</option>
<option>Αρραβωνιασμένος</option>
<option>Παντρεμένος</option>
</select></td>
</tr>
<tr>
<td width="155" height="18" align="right" bgcolor="#bcf6f0" td> <hr> </td>
<td align="left" td bgcolor="#bcf6f0" width="144"> <hr> </td>
</tr>
<tr>
<td></td>
<td align="right"><a href="about_us.htm">About us</a>
</td>
</tr>
</table>
<p>
<input type="button" name="Button" value="Submit" onClick="Validate()">
<input type="button" name="Button" value="Reset" onClick="Validate()">

</p>
</BODY>

</html>[/HTML]
Jan 14 '08 #1
Share this Question
Share on Google+
5 Replies


acoder
Expert Mod 15k+
P: 16,027
In checkIfEmpty() on line 44, you're checking sirname.value [sic], name.value, etc., but these are not global. You need to change this to, e.g. document.forms[formName].elements[elemName] where formName is the name of the form and elemName is the name of the form element. Alternatively, give the form elements IDs and access them using document.getElementById(theID).
Jan 15 '08 #2

P: 3
So I have to give my form a name, and then give each button a name such as "form.button" so that the function can recongnize it globally?
It mustn't be this. After all, why is this smaller form that checks less things working?

[HTML]<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Form validation</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript">
// Η συνάρτηση αυτή καλείται κάθε φορά που γίνεται κλικ στο πλήκτρο 'Validate'
function Validate() {
// Αν ισχύουν οι παρακάτω 3 προϋποθέσεις τότε η φόρμα συμπληρώθηκε σωστά
if (checkIfEmpty()==true && checkEmail()==true && checkPhone()==true) {
alert ('Συγχαρητήρια! Η φόρμα συμπληρώθηκε σωστά!')
return true;
}
else
return false;
}

// Ελέγχει κατά πόσο υπάρχει έστω κι ένα πεδίο κενό
function checkIfEmpty() {
if(sirname.value=="" || name.value=="" || email.value=="" || telephone.value=="") {
window.alert("Παρακαλώ συμπληρώστε όλα τα πεδία!");
return(false);
}
else
return(true);
}

// Ελέγχει κατά πόσο συμπληρώθηκε σωστά το πεδίο 'email' (αν περιλαμβάνει τουλάχιστον τους χαρακτήρες '@' και '.')
function checkEmail() {
var i=0;
var pap = false;
var dot = false;
var mail = email.value;
for(i=0;i<mail.length;i++) {
if(mail.charAt(i)=="@")
pap=true;
if(mail.charAt(i)==".")
dot=true;
}

if(dot==true && pap==true)
return true;
else {
alert("Λάθος email!");
return false;
}
}

// Ελέγχει κατά πόσο συμπληρώθηκε σωστά το πεδίο 'telephone' (αν περιλαμβάνει αποκλειστικά αριθμητικούς χαρακτήρες)
function checkPhone() {
var i=0;
var okk=false;
var phone = telephone.value;
for(i=0;i<phone.length;i++) {
if(parseInt(phone.charAt(i))>=0 && parseInt(phone.charAt(i))<=9 )
ok=true;
else {
window.alert("Λάθος τηλέφωνο!");
ok = false;
break;
}
}
return ok;
}

</script>
<meta name="Microsoft Border" content="t, default">
</head>

<BODY><!--msnavigation--><table border="0" cellpadding="0" cellspacing="0" width="100%"><tr><td>

<p align="center"><font size="6" color="#666666"><strong>
</strong></font><br>
</p>
</td></tr><table dir="ltr" border="0" cellpadding="0" cellspacing="0" width="100%"><tr><!--msnavigation--><td valign="top">

<table width="40%" border="0">
<tr>
<td height="51" colspan="2"><div align="center">
<p><b>Φόρμα καταχώρησης στοιχείων</b></p>
</div></td>
</tr>
<tr>
<td width="37%" bgcolor="#9999FF">Όνομα:</td>
<td width="65%"><input type="text" name="name"></td>
</tr>
<tr>
<td bgcolor="#9999FF">Επώνυμο:</td>
<td><input type="text" name="sirname"></td>
</tr>
<tr>
<td bgcolor="#9999FF">E-mail:</td>
<td><input type="text" name="email"></td>
</tr>
<tr>
<td bgcolor="#9999FF">Τηλέφωνο:</td>
<td><input type="text" name="telephone"></td>
</tr>
</table>
<p>
<input type="button" name="Button" value="Submit" onClick="Validate()">
</p>
</table></BODY>
</html>[/HTML]

Oh, and thank you very much friend, I get to know javascript better..
Jan 15 '08 #3

acoder
Expert Mod 15k+
P: 16,027
So I have to give my form a name, and then give each button a name such as "form.button" so that the function can recongnize it globally?
The text fields already have names, so let's say your form was called "form1", then you would access the email field with document.forms["form1"].elements["email"].
It mustn't be this. After all, why is this smaller form that checks less things working?
No, it doesn't work. Test it on, say Firefox, and you will get an error.
Jan 15 '08 #4

P: 3
No problem, I solved it by defining a name for my form and then "document.form.element.value"...

Thank you very much!
Jan 15 '08 #5

acoder
Expert Mod 15k+
P: 16,027
No problem, I solved it by defining a name for my form and then "document.form.element.value"...
Yes, that's a different syntax for this. Glad you got it working.
Thank you very much!
You're welcome. Post again if you have any more questions.
Jan 15 '08 #6

Post your reply

Sign in to post your reply or Sign up for a free account.