Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations SkipVought on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

runtime error on one computer and not another

Status
Not open for further replies.

arobbo

IS-IT--Management
Feb 15, 2005
62
0
0
GB
Hi , the code below is working fine at home but when i host it on the company intranet it produces a runtime error, could it be an issue of browser compatibility, i'm not sure what version of IE we are running at work , but can anyone see anything in the code below that might classicly cause a problem in older browsers ?

the problem is specifically to the if(document.... line


<script language="javascript">

function checkBox() {

if (document.form.halfDay.checked){
document.form.lenghtOfAbsence.value="0.5";
}

else

countDays(this.form);

}

</script>
 
the bit that runs that function is as follows

<input type =checkbox name = halfDay onClick="checkBox()">

rest of HTML hasn't been changed,
 
sorry didn't want to post the whole lot
....

please find it below


<%
Dim adoCon 'Holds the Database Connection Object
Dim rsStaff_Sickness 'Holds the recordset for the records in the database
Dim strSQL 'Holds the SQL query for the database



Set adoCon = Server.CreateObject("ADODB.Connection")

adoCon.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("staff_Information.mdb")


Set rsStaff_Sickness = Server.CreateObject("ADODB.Recordset")

'Initialise the strSQL variable with an SQL statement to query the database
strSQL = "SELECT ID, Employee.Preffered_Name, Employee.Surname FROM Employee"

'Open the recordset with the SQL query

rsStaff_Sickness.Open strSQL, adoCon
%>
<html>
<head>
<title>Logging Staff Absent</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="javascript">

function checkBox() {

if (document.form.halfDay.checked) {
(document.form.lenghtOfAbsence.value)="0.5";
}

else

countDays(this.form)

}

</script>




<SCRIPT language="JavaScript">

function CheckForm() {

var errorMsg ="";

if (document.form.dateFrom.value => document.form.dateTo.value){
errorMsg +="\nThe return date must be after the Start date";
}

if (document.form.dateFrom.value == ""){
errorMsg += "\n- Please enter the date the absence started";
}

if (document.form.dateTo.value == ""){
errorMsg += "\n- Please enter the date that the person is estimated to return";
}

if (errorMsg !=""){

msg="Ooops you made a mistake\n";

errorMsg += alert(msg + errorMsg + "\n\n");
return false;

}

return true;

}

</SCRIPT>

<SCRIPT LANGUAGE="JavaScript">
<!-- Original: Richard Gorremans (RichardG@spiritwolfx.com) -->
<!-- Web Site: -->

<!-- This script and many more are available free online at -->
<!-- The JavaScript Source!! -->

<!-- Begin
// Check browser version
var isNav4 = false, isNav5 = false, isIE4 = false
var strSeperator = "/";
// If you are using any Java validation on the back side you will want to use the / because
// Java date validations do not recognize the dash as a valid date separator.
var vDateType = 3; // Global value for type of date format
// 1 = mm/dd/yyyy
// 2 = yyyy/dd/mm (Unable to do date check at this time)
// 3 = dd/mm/yyyy
var vYearType = 4; //Set to 2 or 4 for number of digits in the year for Netscape
var vYearLength = 2; // Set to 4 if you want to force the user to enter 4 digits for the year before validating.
var err = 0; // Set the error code to a default of zero
if(navigator.appName == "Netscape") {
if (navigator.appVersion < "5") {
isNav4 = true;
isNav5 = false;
}
else
if (navigator.appVersion > "4") {
isNav4 = false;
isNav5 = true;
}
}
else {
isIE4 = true;
}
function DateFormat(vDateName, vDateValue, e, dateCheck, dateType) {
vDateType = dateType;
// vDateName = object name
// vDateValue = value in the field being checked
// e = event
// dateCheck
// True = Verify that the vDateValue is a valid date
// False = Format values being entered into vDateValue only
// vDateType
// 1 = mm/dd/yyyy
// 2 = yyyy/mm/dd
// 3 = dd/mm/yyyy
//Enter a tilde sign for the first number and you can check the variable information.
if (vDateValue == "~") {
alert("AppVersion = "+navigator.appVersion+" \nNav. 4 Version = "+isNav4+" \nNav. 5 Version = "+isNav5+" \nIE Version = "+isIE4+" \nYear Type = "+vYearType+" \nDate Type = "+vDateType+" \nSeparator = "+strSeperator);
vDateName.value = "";
vDateName.focus();
return true;
}
var whichCode = (window.Event) ? e.which : e.keyCode;
// Check to see if a seperator is already present.
// bypass the date if a seperator is present and the length greater than 8
if (vDateValue.length > 8 && isNav4) {
if ((vDateValue.indexOf("-") >= 1) || (vDateValue.indexOf("/") >= 1))
return true;
}
//Eliminate all the ASCII codes that are not valid
var alphaCheck = " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/-";
if (alphaCheck.indexOf(vDateValue) >= 1) {
if (isNav4) {
vDateName.value = "";
vDateName.focus();
vDateName.select();
return false;
}
else {
vDateName.value = vDateName.value.substr(0, (vDateValue.length-1));
return false;
}
}
if (whichCode == 8) //Ignore the Netscape value for backspace. IE has no value
return false;
else {
//Create numeric string values for 0123456789/
//The codes provided include both keyboard and keypad values
var strCheck = '47,48,49,50,51,52,53,54,55,56,57,58,59,95,96,97,98,99,100,101,102,103,104,105';
if (strCheck.indexOf(whichCode) != -1) {
if (isNav4) {
if (((vDateValue.length < 6 && dateCheck) || (vDateValue.length == 7 && dateCheck)) && (vDateValue.length >=1)) {
alert("Invalid Date\nPlease Re-Enter");
vDateName.value = "";
vDateName.focus();
vDateName.select();
return false;
}
if (vDateValue.length == 6 && dateCheck) {
var mDay = vDateName.value.substr(2,2);
var mMonth = vDateName.value.substr(0,2);
var mYear = vDateName.value.substr(4,4)
//Turn a two digit year into a 4 digit year
if (mYear.length == 2 && vYearType == 4) {
var mToday = new Date();
//If the year is greater than 30 years from now use 19, otherwise use 20
var checkYear = mToday.getFullYear() + 30;
var mCheckYear = '20' + mYear;
if (mCheckYear >= checkYear)
mYear = '19' + mYear;
else
mYear = '20' + mYear;
}
var vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear;
if (!dateValid(vDateValueCheck)) {
alert("Invalid Date\nPlease Re-Enter");
vDateName.value = "";
vDateName.focus();
vDateName.select();
return false;
}
return true;
}
else {
// Reformat the date for validation and set date type to a 1
if (vDateValue.length >= 8 && dateCheck) {
if (vDateType == 1) // mmddyyyy
{
var mDay = vDateName.value.substr(2,2);
var mMonth = vDateName.value.substr(0,2);
var mYear = vDateName.value.substr(4,4)
vDateName.value = mMonth+strSeperator+mDay+strSeperator+mYear;
}
if (vDateType == 2) // yyyymmdd
{
var mYear = vDateName.value.substr(0,4)
var mMonth = vDateName.value.substr(4,2);
var mDay = vDateName.value.substr(6,2);
vDateName.value = mYear+strSeperator+mMonth+strSeperator+mDay;
}
if (vDateType == 3) // ddmmyyyy
{
var mMonth = vDateName.value.substr(2,2);
var mDay = vDateName.value.substr(0,2);
var mYear = vDateName.value.substr(4,4)
vDateName.value = mDay+strSeperator+mMonth+strSeperator+mYear;
}
//Create a temporary variable for storing the DateType and change
//the DateType to a 1 for validation.
var vDateTypeTemp = vDateType;
vDateType = 1;
var vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear;
if (!dateValid(vDateValueCheck)) {
alert("Invalid Date\nPlease Re-Enter");
vDateType = vDateTypeTemp;
vDateName.value = "";
vDateName.focus();
vDateName.select();
return false;
}
vDateType = vDateTypeTemp;
return true;
}
else {
if (((vDateValue.length < 8 && dateCheck) || (vDateValue.length == 9 && dateCheck)) && (vDateValue.length >=1)) {
alert("Invalid Date\nPlease Re-Enter");
vDateName.value = "";
vDateName.focus();
vDateName.select();
return false;
}
}
}
}
else {
// Non isNav Check
if (((vDateValue.length < 8 && dateCheck) || (vDateValue.length == 9 && dateCheck)) && (vDateValue.length >=1)) {
alert("Invalid Date\nPlease Re-Enter");
vDateName.value = "";
vDateName.focus();
return true;
}
// Reformat date to format that can be validated. mm/dd/yyyy
if (vDateValue.length >= 8 && dateCheck) {
// Additional date formats can be entered here and parsed out to
// a valid date format that the validation routine will recognize.
if (vDateType == 1) // mm/dd/yyyy
{
var mMonth = vDateName.value.substr(0,2);
var mDay = vDateName.value.substr(3,2);
var mYear = vDateName.value.substr(6,4)
}
if (vDateType == 2) // yyyy/mm/dd
{
var mYear = vDateName.value.substr(0,4)
var mMonth = vDateName.value.substr(5,2);
var mDay = vDateName.value.substr(8,2);
}
if (vDateType == 3) // dd/mm/yyyy
{
var mDay = vDateName.value.substr(0,2);
var mMonth = vDateName.value.substr(3,2);
var mYear = vDateName.value.substr(6,4)
}
if (vYearLength == 4) {
if (mYear.length < 4) {
alert("Invalid Date\nPlease Re-Enter");
vDateName.value = "";
vDateName.focus();
return true;
}
}
// Create temp. variable for storing the current vDateType
var vDateTypeTemp = vDateType;
// Change vDateType to a 1 for standard date format for validation
// Type will be changed back when validation is completed.
vDateType = 1;
// Store reformatted date to new variable for validation.
var vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear;
if (mYear.length == 2 && vYearType == 4 && dateCheck) {
//Turn a two digit year into a 4 digit year
var mToday = new Date();
//If the year is greater than 30 years from now use 19, otherwise use 20
var checkYear = mToday.getFullYear() + 30;
var mCheckYear = '20' + mYear;
if (mCheckYear >= checkYear)
mYear = '19' + mYear;
else
mYear = '20' + mYear;
vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear;
// Store the new value back to the field. This function will
// not work with date type of 2 since the year is entered first.
if (vDateTypeTemp == 1) // mm/dd/yyyy
vDateName.value = mMonth+strSeperator+mDay+strSeperator+mYear;
if (vDateTypeTemp == 3) // dd/mm/yyyy
vDateName.value = mDay+strSeperator+mMonth+strSeperator+mYear;
}
if (!dateValid(vDateValueCheck)) {
alert("Invalid Date\nPlease Re-Enter");
vDateType = vDateTypeTemp;
vDateName.value = "";
vDateName.focus();
return true;
}
vDateType = vDateTypeTemp;
return true;
}
else {
if (vDateType == 1) {
if (vDateValue.length == 2) {
vDateName.value = vDateValue+strSeperator;
}
if (vDateValue.length == 5) {
vDateName.value = vDateValue+strSeperator;
}
}
if (vDateType == 2) {
if (vDateValue.length == 4) {
vDateName.value = vDateValue+strSeperator;
}
if (vDateValue.length == 7) {
vDateName.value = vDateValue+strSeperator;
}
}
if (vDateType == 3) {
if (vDateValue.length == 2) {
vDateName.value = vDateValue+strSeperator;
}
if (vDateValue.length == 5) {
vDateName.value = vDateValue+strSeperator;
}
}
return true;
}
}
if (vDateValue.length == 10&& dateCheck) {
if (!dateValid(vDateName)) {
// Un-comment the next line of code for debugging the dateValid() function error messages
//alert(err);
alert("Invalid Date\nPlease Re-Enter");
vDateName.focus();
vDateName.select();
}
}
return false;
}
else {
// If the value is not in the string return the string minus the last
// key entered.
if (isNav4) {
vDateName.value = "";
vDateName.focus();
vDateName.select();
return false;
}
else
{
vDateName.value = vDateName.value.substr(0, (vDateValue.length-1));
return false;
}
}
}
}
function dateValid(objName) {
var strDate;
var strDateArray;
var strDay;
var strMonth;
var strYear;
var intday;
var intMonth;
var intYear;
var booFound = false;
var datefield = objName;
var strSeparatorArray = new Array("-"," ","/",".");
var intElementNr;
// var err = 0;
var strMonthArray = new Array(12);
strMonthArray[0] = "Jan";
strMonthArray[1] = "Feb";
strMonthArray[2] = "Mar";
strMonthArray[3] = "Apr";
strMonthArray[4] = "May";
strMonthArray[5] = "Jun";
strMonthArray[6] = "Jul";
strMonthArray[7] = "Aug";
strMonthArray[8] = "Sep";
strMonthArray[9] = "Oct";
strMonthArray[10] = "Nov";
strMonthArray[11] = "Dec";
//strDate = datefield.value;
strDate = objName;
if (strDate.length < 1) {
return true;
}
for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++) {
if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) {
strDateArray = strDate.split(strSeparatorArray[intElementNr]);
if (strDateArray.length != 3) {
err = 1;
return false;
}
else {
strDay = strDateArray[0];
strMonth = strDateArray[1];
strYear = strDateArray[2];
}
booFound = true;
}
}
if (booFound == false) {
if (strDate.length>5) {
strDay = strDate.substr(0, 2);
strMonth = strDate.substr(2, 2);
strYear = strDate.substr(4);
}
}
//Adjustment for short years entered
if (strYear.length == 2) {
strYear = '20' + strYear;
}
strTemp = strDay;
strDay = strMonth;
strMonth = strTemp;
intday = parseInt(strDay, 10);
if (isNaN(intday)) {
err = 2;
return false;
}
intMonth = parseInt(strMonth, 10);
if (isNaN(intMonth)) {
for (i = 0;i<12;i++) {
if (strMonth.toUpperCase() == strMonthArray.toUpperCase()) {
intMonth = i+1;
strMonth = strMonthArray;
i = 12;
}
}
if (isNaN(intMonth)) {
err = 3;
return false;
}
}
intYear = parseInt(strYear, 10);
if (isNaN(intYear)) {
err = 4;
return false;
}
if (intMonth>12 || intMonth<1) {
err = 5;
return false;
}
if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1)) {
err = 6;
return false;
}
if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1)) {
err = 7;
return false;
}
if (intMonth == 2) {
if (intday < 1) {
err = 8;
return false;
}
if (LeapYear(intYear) == true) {
if (intday > 29) {
err = 9;
return false;
}
}
else {
if (intday > 28) {
err = 10;
return false;
}
}
}
return true;
}
function LeapYear(intYear) {
if (intYear % 100 == 0) {
if (intYear % 400 == 0) { return true; }
}
else {
if ((intYear % 4) == 0) { return true; }
}
return false;
}
// End -->
</script>
<Script Language=JavaScript>

var nDay = new Array();
var i = 0;

function verify(isField){

splitDate = isField.value.split("/");
refDate = new Date(splitDate[1]+"/"+splitDate[0]+"/"+splitDate[2]);
if (splitDate[1] < 1 || splitDate[1] > 12 || refDate.getDate() != splitDate[0] || splitDate[2].length != 4 || (!/^19|20/.test(splitDate[2]))){return false}
nDay[i++] = refDate.getDay();
return refDate;
}

function countDays(isForm){

isValid = true;
startDate = verify(isForm.dateFrom);
if (isValid){endDate = verify(isForm.dateTo)} else {endDate = false}
if (startDate && endDate)
{
daysApart = Math.round(((endDate-startDate)/86400000));
if (nDay[0] == 0 || nDay[0] == 6)
{isValid = false; startDate=false}
if (daysApart < 0){isValid = false;endDate=false}
if (isValid)
{
workDays = daysApart-(parseInt(daysApart/7)*2);
if (daysApart < 7 && nDay[1] != 0 && nDay[0]-nDay[1] >= 1){workDays = workDays-2}
if (daysApart < 7 && nDay[1] == 0){workDays--}
isForm.lenghtOfAbsence.value = workDays;
i = 0;
}
}
if (!startDate)
{
alert('Oops the date that someone is logged as being sick must be a weekday.\It must also be earlier than the return date.\ Try again ...')
isForm.dateFrom.value = "";
isForm.dateFrom.focus();
i = 0;
}
else if (!endDate)
{
alert('Oops the date that someone is logged as being sick must be a weekday.\It must also be earlier than the return date.\ Try again ...')
isForm.dateTo.value = "";
isForm.dateTo.focus();
i = 0;
}
}

</Script>

</head>

<body bgcolor="#FFFFFF" text="#000000" onLoad="document.dateTest.testDateFormat1.focus()">
<form name="form" method="post" action="add_to_staff_Absence.asp" onSubmit="return CheckForm();">
<p>&nbsp;</p>
<Center><b> To log someone absent from work please fill in the form below and click on the submit button.</B>
<BR><BR> <b>Thank you </B>
<p> </p>
<table width="75%" border="1" align="center">

<TR>
<TD> Name of person Absent </td>
<td>
<select name="name" size="1">
<%
' while we don't get the end of DataBase
Do While Not rsStaff_Sickness.EOF
'we put the ID at Value
' this value is important to linked tables
%>
<option VALUE="<%=rsStaff_Sickness("ID")%>">
<!-- This is what will appear in the combo box -->
<%=rsStaff_Sickness("Preffered_Name") &" "&rsStaff_Sickness("Surname")%></option>
<%
' Move to the next record...
rsStaff_Sickness.MoveNext
Loop ' keep the loop
rsStaff_Sickness.Close
Set rsStaff_Sickness = Nothing
Set adoCon = Nothing
%>
</SELECT>
</td>
</tr>
<tr>
<td>Reason: </td>
<td>
<TextArea name="reason" Cols = 30 rows =8></textarea>
</td>
</tr>
<tr>
<td>Notes:</td>
<td>
<TextArea name="notes" Cols = 30 rows =8></textarea> </td>
</tr>
<tr>
<td>Absent From: (e.g. 10/08/2005)</td>
<td>
<input type="text" name="dateFrom" maxlength="100"
onFocus="javascript:vDateType='3'" onKeyUp="DateFormat(this,this.value,event,false,'3')" onBlur="DateFormat(this,this.value,event,true,'3')">
</td>
</tr>
<tr>
<td>Return Date:(e.g. 10/08/2005) </td>
<td>
<input type="text" name="dateTo" maxlength="100"
onFocus="javascript:vDateType='3'" onKeyUp="DateFormat(this,this.value,event,false,'3')" onBlur="DateFormat(this,this.value,event,true,'3'); countDays(this.form)">
</td>
</tr>
<tr>
<tr>
<td>Length of Absence: (Calculated for you) </td>
<td>
<input type="text" readonly name="lenghtOfAbsence" maxlength="20"> ( Day / Days )
</td>
</tr>
<tr>
<TD>If a half day please check this checkbox
</td>
<td><input type =checkbox name = halfDay onClick="checkBox()">
</td>
</tr>


<tr>
<td>Logged by:(Your Name) </td>
<td>
<input type="text" name="loggedBy" maxlength="100">
</td>
</tr>
<tr>




</table>
<p></p>
<p align="center">

<input type="submit" name="Submit" value="Submit">
<input type="reset" name="reset" value="Reset">
</p>
<p></p>
<p>&nbsp; </p>
</form>
</body>
</html>
 
Wrap your code in [code][/code] tags to make it easier to copy/read your code.

Try changing the extra line you added to be:
Code:
<input type="checkbox" name="halfDay" onclick="checkBox()">

Cheers,
Jeff

[tt]Jeff's Page [/tt][tt]@[/tt][tt] Code Couch
[/tt]
 
tried that , still getting same error message ... :(
 
Try changing this:

Code:
<form name="form"

to this:

Code:
<form name="myForm"

and all occurrences of this:

Code:
document.form.

to this:

Code:
document.forms['myForm'].

Hope this helps,
Dan

[tt]Dan's Page [blue]@[/blue] Code Couch
[/tt]
 
Naming your form form is asking for trouble. Rename your form, or use the following method to access the checkbox (assuming that it's in the first form of the page):

Code:
if (document.form[COLOR=red]s[0][/color].halfDay.checked) {

Cheers,
Jeff

[tt]Jeff's Page [/tt][tt]@[/tt][tt] Code Couch
[/tt]
 
changed the name of form ....

still get same error message
 
changed the name of form ....
So change the function (the way you access the form field). That's the solution to this problem. Here is a little test page that proves my suggestion works:
Code:
<html>
<head><title></title>
<script type="text/javascript">
function checkBox() {
	if (document.forms['myFrm'].halfDay.checked) {
		alert('Checked');
	} else {
		alert('Not checked');
	}
}
</script>
</head>

<body>
<form>
	<fieldset>
		<input type="checkbox" name="halfDay" onclick="checkBox()"/>
	</fieldset>
</form>
</body>
</html>

Cheers,
Jeff

[tt]Jeff's Page [/tt][tt]@[/tt][tt] Code Couch
[/tt]
 
Except that my test page uses slightly different code to that I posted. Use the line I originally posted in the function above as well:
Code:
if (document.forms[0].halfDay.checked) {

Sorry for the mis-post
Jeff

[tt]Jeff's Page [/tt][tt]@[/tt][tt] Code Couch
[/tt]
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top