siric Posted January 19, 2011 Share Posted January 19, 2011 HI, I am running the following script which allows me to have a filter on a second dropdown box depending on what was chosen in the first one. function getState(countryId) { var strURL="findState.php?country="+countryId; var req = getXMLHTTP(); if (req) { req.onreadystatechange = function() { if (req.readyState == 4) { // only if "OK" if (req.status == 200) { document.getElementById('statediv').innerHTML=req.responseText; } else { alert("There was a problem while using XMLHTTP:\n" + req.statusText); } } } req.open("GET", strURL, true); req.send(null); } } <form method="post" action="" name="form1"> <table width="60%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="150">Country</td> <td width="150"><select name="country" onChange="getState(this.value)"> <option value="">Select Country</option> <option value="1">USA</option> <option value="2">Canada</option> </select></td> </tr> <tr style=""> <td>State</td> <td ><div id="statediv"><select name="state" > <option>Select Country First</option> </select></div></td> </tr> <tr> <td> </td> <td> </td> </tr> <tr> <td> </td> <td> </td> </tr> </table> and it works. If I however add another set of dropdown boxes with the same criteria, the second one does not work and I have to change the name of the function in the onChange statement and add that new function to the script at the top to get it to work. function getState(countryId) { var strURL="findState.php?country="+countryId; var req = getXMLHTTP(); if (req) { req.onreadystatechange = function() { if (req.readyState == 4) { // only if "OK" if (req.status == 200) { document.getElementById('statediv').innerHTML=req.responseText; } else { alert("There was a problem while using XMLHTTP:\n" + req.statusText); } } } req.open("GET", strURL, true); req.send(null); } } function getState1(countryId) { var strURL="findState.php?country="+countryId; var req = getXMLHTTP(); if (req) { req.onreadystatechange = function() { if (req.readyState == 4) { // only if "OK" if (req.status == 200) { document.getElementById('statediv').innerHTML=req.responseText; } else { alert("There was a problem while using XMLHTTP:\n" + req.statusText); } } } req.open("GET", strURL, true); req.send(null); } } <form method="post" action="" name="form1"> <table width="60%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="150">Country</td> <td width="150"><select name="country" onChange="getState(this.value)"> <option value="">Select Country</option> <option value="1">USA</option> <option value="2">Canada</option> </select></td> </tr> <tr style=""> <td>State</td> <td ><div id="statediv"><select name="state" > <option>Select Country First</option> </select></div></td> </tr> <tr style=""> <td>City</td> <td ><div id="citydiv"><select name="city"> <option>Select State First</option> </select></div></td> </tr> </table> <table width="60%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="150">Country</td> <td width="150"><select name="country" onChange="getState1(this.value)"> <option value="">Select Country</option> <option value="1">USA</option> <option value="2">Canada</option> </select></td> </tr> <tr style=""> <td>State</td> <td ><div id="statediv"><select name="state" > <option>Select Country First</option> </select></div></td> </tr> </table> </form> Isn't there a way that I can reuse the function with the same name as many times as I want without having to use a new name each time?? Link to comment https://forums.phpfreaks.com/topic/224957-reuse-of-ajax-function/ Share on other sites More sharing options...
Firemankurt Posted January 27, 2011 Share Posted January 27, 2011 You can not have two divs with the same ID "statediv" Change div ids and pass them with your onChange event. Link to comment https://forums.phpfreaks.com/topic/224957-reuse-of-ajax-function/#findComment-1166294 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.