AJAX cascading drop down, cant use set_select to repopulate form - El Forum - 10-12-2010
[eluser]Unknown[/eluser]
Hello, I am having some difficulties repopulating a form if a user triggers the error validation rules. It works fine on all apart from my AJAX drop down. If anyone could help point me in the right direction I would be very grateful.
So basically when a user clicks on a drop down item, it populates another list below it. The problem is that it does not repopulate and select the right one.
here is my javascript
Code: function populateProjects(s)
{
employer_id = document.getElementById('employer').value ;
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
{
alert ("Browser does not support HTTP Request");
return ;
}
var url="http://localhost/admin/index.php/manage_activity/cascading_dropdown/";
url=url+employer_id;
xmlHttp.open("GET",url,true);
xmlHttp.onreadystatechange=sectionStateChanged ;
xmlHttp.send(null);
}
function sectionStateChanged()
{
if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete")
{
//alert(xmlHttp.responseText) ;
//document.getElementById('lblcategory')[removed]=xmlHttp.responseText ;
document.getElementById('td_Version1')[removed]=xmlHttp.responseText ;
}
}
function GetXmlHttpObject()
{
var xmlHttp=null;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
//Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
here is my controller which then uses a library called getproject
Code: public function index(){
//get ID for drop down list
$employer_id = $this->uri->segment(3);
$data['plist'] = $this->project->get_projects($employer_id);
$data['eid'] = $employer_id;
$this->load->view('header_view');
$data['activity_type'] = $this->list_activity();
$data['staff'] = $this->user->get_users();
$employer = $this->employer->get_employers();
$data['employer'] = $this->employer->get_an_employer($employer_id);
$data['employerlist'] = $employer;
$this->load->view('manageactivity_view',$data);
}
public function cascading_dropdown(){
$employer_id = $this->uri->segment(3);
$params=array(
'employer_id' =>$employer_id
);
$this->load->library('getproject');
$this->getproject->get_list($params);
}
here is my getproject library
Code: <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Getproject {
function get_list($params){
$CI =& get_instance();
$retval = "<select name='project' id='project'>";
$retval .= "<option selected=\"selected\" value='' width='130' style=\"width:130px\" >Please Select</option>";
$employer_id = $params['employer_id'];
$plist = array();
$plist = $CI->project->get_projects($employer_id);
foreach($plist as $project){
$id = $project['id'];
$name = $project['name'];
$retval .= "<option value='".$id.'" '. set_select("project", $id) .'>'.$name."</option>";
}
echo $retval ;
}
}
?>
here's the view part
Code: <td>Project</td>
<td id='td_Version1'>
<select name="project" id="project">
<option selected="selected">Please Select</option>
<?php
foreach($plist as $array)
{
$id = $array['id'];
$name = $array['name'];
echo "<option value='".$id.'" '. set_select("project", $id) .'>'.$name."</option>";
}
?>
</select>
</td>
I have tried many different ways like repassing in the employer ID to the javascrpt function but nothing seems to work 100%.
|