Link to home
Start Free TrialLog in
Avatar of Richard Korts
Richard KortsFlag for United States of America

asked on

Infinite Loop Script

See code.

The Javascript function chk_values gets stuck in an infinite loop.

Note the alerts.

I've looked at this till I'm blue in the face and I can't see why it doesn't fall out the end of the loop.

I'm sure it's VERY simple, I just can't see it.

Thanks
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
	<title>Event Mark Registrants Paid</title>
<style type="text/css">
	.pt18 {font-size: 18pt; font-family: Arial}
	.pt14 {font-size: 14pt; font-family: Arial}	
	.pt12 {font-size: 12pt; font-family: Arial}
	.pt11 {font-size: 11pt; font-family: Arial}
	.pt10 {font-size: 10pt; font-family: Arial}
	.pt8  {font-size: 8pt; font-family: Arial}
	.pt9  {font-size: 9pt; font-family: Arial}	
	.pt7  {font-size: 7pt; font-family: Arial}
</style>	
<script language="JavaScript">	
<!--
	ac = "";
	pid = "";
			ar = "N";
			
			regname = "";
			
	function get_data() {
		if (document.st.evnt.options[0].selected) {
			alert("Please select an Event.");
			return false;
		}
		eid = document.st.evnt.value;
		document.st.action = "event_mark_paid.php?id=" + eid;	
		document.st.submit();
		return true;
	}	
	function isdigit(test) {
		if (test == "0" || test == "1" || test == "2" ||
	    	test == "3" || test == "4" || test == "5" ||
	    	test == "6" || test == "7" || test == "8" ||
	    	test == "9")
			return true;
		else {
			return false;
	     }
	}
// Function to determine if a field is numeric
	function isnumeric(field) {
		len = field.length;
		for (i = 0; i < len; i++)
			if (isdigit(field.charAt(i)) == false) {
				return false;
			}
		return true;
	}		

	function chk_values() {
		if (ac == "a") {
			window.location = "admin_menu.php";
			return false;
		}
		ne = document.st.elements.length;	
		alert("no elements = " + ne);
		for (i = 0; i < ne; i++) {
			if (document.st.elements[i].type == "text") {
				if (document.st.elements[i].value != "") {
					val = document.st.elements[i].value;
					if (! isnumeric(val)) {
						alert("One or more New Amt Paid values is not a number.");
						return false;
					}
				}
			}
		}	
		alert("Ready to go to update");			
		return true;
	}	

// -->
</script>		
</head>

<body>
<form method="POST" name="st" action="test.php" onsubmit="return chk_values();" >
		<input type="hidden" name="eid" value="2011-21">
<table width="900" cellpadding="0" cellspacing="0">

	<tr>
		<td colspan="3"><img src="images/admin_header.jpg"></td>
	</tr>
	<tr>
		<td><img src="images/vline_left.jpg" width="50" height="450"></td>
		<td valign="top"><table width="100%" cellpadding="0" cellspacing="0">
				<tr>
					<td><img src="images/spacer.gif" width="800" height="5"></td>
				</tr>

				<tr>
					<td bgcolor="#52021F"><img src="images/spacer.gif" width="800" height="2"></td>
				</tr>
				<tr>
					<td><img src="images/spacer.gif" width="800" height="5"></td>
				</tr>
				<tr>
					<td class="pt14" align="center"><font color="#52021F"><b>Event Registrants Paid</b></font></td>

				</tr>	
				<tr>
					<td><img src="images/spacer.gif" width="800" height="20"></td>
				</tr>	
				
				<tr>
					<td>
						<table width="100%" class="pt9">
							<tr>
								<td align="right" width="35%">Select Event:&nbsp;</td>

								<td><select name="evnt" size="1" class="pt8" onchange="get_data();">
									<option> - Select Event - </option>
																	<option value="2011-21" selected>Physician Group Consolidation - 06/09/2011</option>
										
								</select></td>
							</tr>	
								
							<tr>
								<td colspan="2"><img src="images/spacer.gif" width="50" height="20"></td>
							</tr>	
						</table>	
						<table width="100%" class="pt10">		
						<tr>

							<td colspan="6" class="pt12"><b>Event Registrants Paid for Event Physician Group Consolidation</b></td>
						</tr>		
																																																																																																										
							<tr>
								<td colspan="6"><img src="images/spacer.gif" width="50" height="20"></td>
							</tr>
							
						<tr>
							<td valign="top"><b>Name</b></td>
							<td align="center" valign="top"><b>Member</b></td>

							<td align="center" valign="top"><b>Amt Paid</b></td>
							<td valign="top"><b>New Amt Paid</b></td>
						</tr>	
										
							<tr>
								<td>M0201</td>
								<td align="center">N</td>
								<td align="center">$45</td>

								<td>$<input type="text" name="apaid0" class="pt8" size="5">
								</td>												
							</tr>
										
							<tr>
								<td>-- Select Non-Member --</td>
								<td align="center">N</td>
								<td align="center">$45</td>

								<td>$<input type="text" name="apaid1" class="pt8" size="5">
								</td>												
							</tr>
										
							<tr>
								<td>Claudia Alvidrez</td>
								<td align="center">Y</td>
								<td align="center">$25</td>

								<td>$<input type="text" name="apaid2" class="pt8" size="5">
								</td>												
							</tr>
										
							<tr>
								<td>David Korts</td>
								<td align="center">N</td>
								<td align="center">$60</td>

								<td>$<input type="text" name="apaid3" class="pt8" size="5">
								</td>												
							</tr>
										
							<tr>
								<td>Donald Trump</td>
								<td align="center">N</td>
								<td align="center">$250</td>

								<td>$<input type="text" name="apaid4" class="pt8" size="5">
								</td>												
							</tr>
							
						
					
							<tr>
								<td colspan="6"><img src="images/spacer.gif" width="50" height="20"></td>
							</tr>					
							<tr>
								<td colspan="6" align="center"><input type="submit" value="Update Paid" onMousedown="ac='u';" class="pt8"><img src="images/spacer.gif" width="100" height="5"><input type="submit" value="Admin Menu" onMousedown="ac='a';" class="pt8"></td>
							</tr>																																																																																																																																																										
						</table>

					</td>
				</tr>										
			</table>
		</td>					
		<td><img src="images/vline_right.jpg" width="50" height="450"></td>	
	</tr>
	<tr>
		<td><img src="images/ll_border.jpg"></td>
		<td><img src="images/vline_bot.jpg" width="800" height="50"></td>
		<td><img src="images/lr_border.jpg"></td>

	</tr>	
</form>	
</table>


</body>
</html>

Open in new window

Avatar of Erdinç Güngör Çorbacı
Erdinç Güngör Çorbacı
Flag of Türkiye image

Try replacing your JS block with this one ;

 
var ac = "";
var pid = "";
var ar = "N";
var regname = "";

function get_data() {
    if (document.st.evnt.options[0].selected) {
        alert("Please select an Event.");
        return false;
    }
    eid = document.st.evnt.value;
    document.st.action = "event_mark_paid.php?id=" + eid;
    document.st.submit();
    return true;
}

function isdigit(test) {
    if (test == "0" || test == "1" || test == "2" || test == "3" || test == "4" || test == "5" || test == "6" || test == "7" || test == "8" || test == "9") {return true;}
    else {
        return false;
    }
}
// Function to determine if a field is numeric

function isnumeric(field) {
    len = field.length;
    if_digit = true;
    for (i = 0; i < len; i++){
        if (isdigit(field.charAt(i)) === false) {
            if_digit = false;
        }
    }
    return if_digit;
}

function chk_values() {
    if (ac == "a") {
        window.location = "admin_menu.php";
        return false;
    }
    ne = document.st.elements.length;
    alert("no elements = " + ne);
    for (i = 0; i < ne; i++) {
        if (document.st.elements[i].type == "text") {
            if (document.st.elements[i].value !== "") {
                val = document.st.elements[i].value;
                if (!isnumeric(val)) {
                    alert("One or more New Amt Paid values is not a number.");
                    return false;
                }
            }
        }
    }
    alert("Ready to go to update");
    return true;
}

Open in new window

Avatar of Richard Korts

ASKER

To erdincgc:

It does the same thing (hangs).

Thanks
ASKER CERTIFIED SOLUTION
Avatar of hielo
hielo
Flag of Wallis and Futuna image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
alternatively, you can declare all those local variables at the beginning of the function (see attached code):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
	<title>Event Mark Registrants Paid</title>
<style type="text/css">
	.pt18 {font-size: 18pt; font-family: Arial}
	.pt14 {font-size: 14pt; font-family: Arial}	
	.pt12 {font-size: 12pt; font-family: Arial}
	.pt11 {font-size: 11pt; font-family: Arial}
	.pt10 {font-size: 10pt; font-family: Arial}
	.pt8  {font-size: 8pt; font-family: Arial}
	.pt9  {font-size: 9pt; font-family: Arial}	
	.pt7  {font-size: 7pt; font-family: Arial}
</style>	
<script type="text/javascript">	

	var ac = "";
	var pid = "";
	var ar = "N";
	var regname = "";
			
	function get_data() {
		if (document.st.evnt.options[0].selected) {
			alert("Please select an Event.");
			return false;
		}
		var eid = document.st.evnt.value;
		document.st.action = "event_mark_paid.php?id=" + eid;	
		document.st.submit();
		return true;
	}

	function isdigit(v){
		return /^\d$/.test(v);
	}
	
// Function to determine if a field is numeric
	function isnumeric(field) {
		var len,i;
		 len = field.length;
		for (i = 0; i < len; i++)
			if (isdigit(field.charAt(i)) == false) {
				return false;
			}
		return true;
	}		

	function chk_values() {
		var ne,val,i;
		if (ac == "a") {
			window.location = "admin_menu.php";
			return false;
		}
		ne = document.st.elements.length;	
		alert("no elements = " + ne);
		for (i = 0; i < ne; i++) {
			if (document.st.elements[i].type == "text") {
				if (document.st.elements[i].value != "") {
					val = document.st.elements[i].value;
					if (! isnumeric(val)) {
						alert("One or more New Amt Paid values is not a number.");
						return false;
					}
				}
			}
		}	
		alert("Ready to go to update");			
		return true;
	}	

</script>		
</head>

<body>
<form method="POST" name="st" action="test.php" onsubmit="return chk_values();" >
		<input type="hidden" name="eid" value="2011-21">
<table width="900" cellpadding="0" cellspacing="0">

	<tr>
		<td colspan="3"><img src="images/admin_header.jpg"></td>
	</tr>
	<tr>
		<td><img src="images/vline_left.jpg" width="50" height="450"></td>
		<td valign="top"><table width="100%" cellpadding="0" cellspacing="0">
				<tr>
					<td><img src="images/spacer.gif" width="800" height="5"></td>
				</tr>

				<tr>
					<td bgcolor="#52021F"><img src="images/spacer.gif" width="800" height="2"></td>
				</tr>
				<tr>
					<td><img src="images/spacer.gif" width="800" height="5"></td>
				</tr>
				<tr>
					<td class="pt14" align="center"><font color="#52021F"><b>Event Registrants Paid</b></font></td>

				</tr>	
				<tr>
					<td><img src="images/spacer.gif" width="800" height="20"></td>
				</tr>	
				
				<tr>
					<td>
						<table width="100%" class="pt9">
							<tr>
								<td align="right" width="35%">Select Event:&nbsp;</td>

								<td><select name="evnt" size="1" class="pt8" onchange="get_data();">
									<option> - Select Event - </option>
																	<option value="2011-21" selected>Physician Group Consolidation - 06/09/2011</option>
										
								</select></td>
							</tr>	
								
							<tr>
								<td colspan="2"><img src="images/spacer.gif" width="50" height="20"></td>
							</tr>	
						</table>	
						<table width="100%" class="pt10">		
						<tr>

							<td colspan="6" class="pt12"><b>Event Registrants Paid for Event Physician Group Consolidation</b></td>
						</tr>		
																																																																																																										
							<tr>
								<td colspan="6"><img src="images/spacer.gif" width="50" height="20"></td>
							</tr>
							
						<tr>
							<td valign="top"><b>Name</b></td>
							<td align="center" valign="top"><b>Member</b></td>

							<td align="center" valign="top"><b>Amt Paid</b></td>
							<td valign="top"><b>New Amt Paid</b></td>
						</tr>	
										
							<tr>
								<td>M0201</td>
								<td align="center">N</td>
								<td align="center">$45</td>

								<td>$<input type="text" name="apaid0" class="pt8" size="5">
								</td>												
							</tr>
										
							<tr>
								<td>-- Select Non-Member --</td>
								<td align="center">N</td>
								<td align="center">$45</td>

								<td>$<input type="text" name="apaid1" class="pt8" size="5">
								</td>												
							</tr>
										
							<tr>
								<td>Claudia Alvidrez</td>
								<td align="center">Y</td>
								<td align="center">$25</td>

								<td>$<input type="text" name="apaid2" class="pt8" size="5">
								</td>												
							</tr>
										
							<tr>
								<td>David Korts</td>
								<td align="center">N</td>
								<td align="center">$60</td>

								<td>$<input type="text" name="apaid3" class="pt8" size="5">
								</td>												
							</tr>
										
							<tr>
								<td>Donald Trump</td>
								<td align="center">N</td>
								<td align="center">$250</td>

								<td>$<input type="text" name="apaid4" class="pt8" size="5">
								</td>												
							</tr>
							
						
					
							<tr>
								<td colspan="6"><img src="images/spacer.gif" width="50" height="20"></td>
							</tr>					
							<tr>
								<td colspan="6" align="center"><input type="submit" value="Update Paid" onMousedown="ac='u';" class="pt8"><img src="images/spacer.gif" width="100" height="5"><input type="submit" value="Admin Menu" onMousedown="ac='a';" class="pt8"></td>
							</tr>																																																																																																																																																										
						</table>

					</td>
				</tr>										
			</table>
		</td>					
		<td><img src="images/vline_right.jpg" width="50" height="450"></td>	
	</tr>
	<tr>
		<td><img src="images/ll_border.jpg"></td>
		<td><img src="images/vline_bot.jpg" width="800" height="50"></td>
		<td><img src="images/lr_border.jpg"></td>

	</tr>	

</table>
</form>

</body>
</html>

Open in new window

To hielo,

I made the change per your first suggestion. See code. This is how it looks now.

When I saw that i was used in two functions, what you said made PERFECT sense.

But it doesn't change ANYTHING!!

Crazy.
<script language="JavaScript">	
<!--
	ac = "";
	pid = "";
			ar = "N";
			
			regname = "";
			
function get_data() {
    if (document.st.evnt.options[0].selected) {
        alert("Please select an Event.");
        return false;
    }
    eid = document.st.evnt.value;
    document.st.action = "event_mark_paid.php?id=" + eid;
    document.st.submit();
    return true;
}

function isdigit(test) {
    if (test == "0" || test == "1" || test == "2" || test == "3" || test == "4" || test == "5" || test == "6" || test == "7" || test == "8" || test == "9") {return true;}
    else {
        return false;
    }
}
// Function to determine if a field is numeric

function isnumeric(field) {
    len = field.length;
    if_digit = true;
    for (var i = 0; i < len; i++){
        if (isdigit(field.charAt(i)) === false) {
            if_digit = false;
        }
    }
    return if_digit;
}

function chk_values() {
    if (ac == "a") {
        window.location = "admin_menu.php";
        return false;
    }
    ne = document.st.elements.length;
    alert("no elements = " + ne);
    for (var i = 0; i < ne; i++) {
        if (document.st.elements[i].type == "text") {
            if (document.st.elements[i].value !== "") {
                val = document.st.elements[i].value;
                if (!isnumeric(val)) {
                    alert("One or more New Amt Paid values is not a number.");
                    return false;
                }
            }
        }
    }
    alert("Ready to go to update");
    return true;
}

// -->
</script>

Open in new window

If there is no browser issue the code i've sent should be error free.

There may be problems outside of JS block here is the complete page i've tested before my first comment .

 
<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title> - jsFiddle demo</title>
  <script type='text/javascript' src='/js/lib/dummy.js'></script>
  
  <link rel="stylesheet" type="text/css" href="/css/normalize.css">
  <link rel="stylesheet" type="text/css" href="/css/result-light.css">
  
  <style type='text/css'>
    .pt18 {font-size: 18pt; font-family: Arial}
.pt14 {font-size: 14pt; font-family: Arial}     
.pt12 {font-size: 12pt; font-family: Arial}
.pt11 {font-size: 11pt; font-family: Arial}
.pt10 {font-size: 10pt; font-family: Arial}
.pt8  {font-size: 8pt; font-family: Arial}
.pt9  {font-size: 9pt; font-family: Arial}      
.pt7  {font-size: 7pt; font-family: Arial}  
  </style>
  
  <script type='text/javascript'>
  //<![CDATA[ 
  
  var ac = "";
var pid = "";
var ar = "N";
var regname = "";

function get_data() {
    if (document.st.evnt.options[0].selected) {
        alert("Please select an Event.");
        return false;
    }
    eid = document.st.evnt.value;
    document.st.action = "event_mark_paid.php?id=" + eid;
    document.st.submit();
    return true;
}

function isdigit(test) {
    if (test == "0" || test == "1" || test == "2" || test == "3" || test == "4" || test == "5" || test == "6" || test == "7" || test == "8" || test == "9") {
        return true;
    }
    else {
        return false;
    }
}
// Function to determine if a field is numeric

function isnumeric(field) {
    len = field.length;
    if_digit = true;
    for (i = 0; i < len; i++) {
        if (isdigit(field.charAt(i)) === false) {
            if_digit = false;
        }
    }
    return if_digit;
}

function chk_values() {
     alert("Ready to go to update"); 
    if (ac == "a") {
        window.location = "admin_menu.php";
        return false;
    }
    ne = document.st.elements.length;
    alert("no elements = " + ne);
    for (i = 0; i < ne; i++) {
        if (document.st.elements[i].type == "text") {
            if (document.st.elements[i].value !== "") {
                val = document.st.elements[i].value;
                if (!isnumeric(val)) {
                    alert("One or more New Amt Paid values is not a number.");
                    return false;
                }
            }
        }
    }
    alert("Ready to go to update");
    return true;
}
  
  //]]> 
  </script>
  
</head>
<body>
  <form method="POST" name="st" action="test.php" onsubmit="alert('asdfas');return chk_values();" >
    <input type="hidden" name="eid" value="2011-21">
    <table width="900" cellpadding="0" cellspacing="0">
        
        <tr>
            <td colspan="3"><img src="images/admin_header.jpg"></td>
        </tr>
        <tr>
            <td><img src="images/vline_left.jpg" width="50" height="450"></td>
            <td valign="top"><table width="100%" cellpadding="0" cellspacing="0">
                <tr>
                    <td><img src="images/spacer.gif" width="800" height="5"></td>
                </tr>
                
                <tr>
                    <td bgcolor="#52021F"><img src="images/spacer.gif" width="800" height="2"></td>
                </tr>
                <tr>
                    <td><img src="images/spacer.gif" width="800" height="5"></td>
                </tr>
                <tr>
                    <td class="pt14" align="center"><font color="#52021F"><b>Event Registrants Paid</b></font></td>
                    
                </tr>   
                <tr>
                    <td><img src="images/spacer.gif" width="800" height="20"></td>
                </tr>   
                
                <tr>
                    <td>
                        <table width="100%" class="pt9">
                            <tr>
                                <td align="right" width="35%">Select Event:&nbsp;</td>
                                
                                <td><select name="evnt" size="1" class="pt8" onchange="get_data();">
                                    <option> - Select Event - </option>
                                    <option value="2011-21" selected>Physician Group Consolidation - 06/09/2011</option>
                                    
                                    </select></td>
                            </tr>   
                            
                            <tr>
                                <td colspan="2"><img src="images/spacer.gif" width="50" height="20"></td>
                            </tr>   
                        </table>        
                        <table width="100%" class="pt10">               
                            <tr>
                                
                                <td colspan="6" class="pt12"><b>Event Registrants Paid for Event Physician Group Consolidation</b></td>
                            </tr>           
                            
                            <tr>
                                <td colspan="6"><img src="images/spacer.gif" width="50" height="20"></td>
                            </tr>
                            
                            <tr>
                                <td valign="top"><b>Name</b></td>
                                <td align="center" valign="top"><b>Member</b></td>
                                
                                <td align="center" valign="top"><b>Amt Paid</b></td>
                                <td valign="top"><b>New Amt Paid</b></td>
                            </tr>   
                            
                            <tr>
                                <td>M0201</td>
                                <td align="center">N</td>
                                <td align="center">$45</td>
                                
                                <td>$<input type="text" name="apaid0" class="pt8" size="5">
                                </td>                                                                                           
                            </tr>
                            
                            <tr>
                                <td>-- Select Non-Member --</td>
                                <td align="center">N</td>
                                <td align="center">$45</td>
                                
                                <td>$<input type="text" name="apaid1" class="pt8" size="5">
                                </td>                                                                                           
                            </tr>
                            
                            <tr>
                                <td>Claudia Alvidrez</td>
                                <td align="center">Y</td>
                                <td align="center">$25</td>
                                
                                <td>$<input type="text" name="apaid2" class="pt8" size="5">
                                </td>                                                                                           
                            </tr>
                            
                            <tr>
                                <td>David Korts</td>
                                <td align="center">N</td>
                                <td align="center">$60</td>
                                
                                <td>$<input type="text" name="apaid3" class="pt8" size="5">
                                </td>                                                                                           
                            </tr>
                            
                            <tr>
                                <td>Donald Trump</td>
                                <td align="center">N</td>
                                <td align="center">$250</td>
                                
                                <td>$<input type="text" name="apaid4" class="pt8" size="5">
                                </td>                                                                                           
                            </tr>
                            
                            
                            
                            <tr>
                                <td colspan="6"><img src="images/spacer.gif" width="50" height="20"></td>
                            </tr>                                   
                            <tr>
                                <td colspan="6" align="center"><input type="submit" value="Update Paid" onMousedown="ac='u';" class="pt8"><img src="images/spacer.gif" width="100" height="5"><input type="submit" value="Admin Menu" onMousedown="ac='a';" class="pt8"></td>
                            </tr>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
                        </table>
                        
                    </td>
                </tr>                                                                           
                </table>
            </td>                                   
            <td><img src="images/vline_right.jpg" width="50" height="450"></td>     
        </tr>
        <tr>
            <td><img src="images/ll_border.jpg"></td>
            <td><img src="images/vline_bot.jpg" width="800" height="50"></td>
            <td><img src="images/lr_border.jpg"></td>
            
        </tr>   
    </form> 
    </table>
  
</body>


</html>

Open in new window


Also you can see it at

http://jsfiddle.net/erdincgc/rnGQa/
Somehow jsfiddle address changed without notice ... this is the right one
http://fiddle.jshell.net/erdincgc/JEhTB/
To hielo,

I see my problem, the full page is php which reloads, I didn't change the reload to the new test page name.

Your fix works perfectly.

Thanks,

Rkorts