After hours of research and trial and error, I must turn to the group for help with this. I have a series of three linked combo boxes for state, county, and city from the tutorial here: http://forum.phpsitesolutions.com/php-frameworks/cakephp/ajax-cakephp-dynamically-populate-html-select-dropdown-box-t29.html.
They work great... mostly. I have added to the code in the add.ctp file to include an 'empty' element of 'Please select a [whatever]'. So all three combo boxes start out with the first value being 'Please select a [whatever]'. The user selects a state. The $ajax->observeField on the state combo box fires and loads the county combo box. This loses the initial 'Please select a [whatever] and displays the first entry in the list of counties for the selected state. Even if the user opens the county combo box and selects the first entry, the $ajax->observeField does not fire to load the next combo box of cities, probably because there is no actual change. Only if the user selects a DIFFERENT element than the first one does the event fire. A possible way around this is to still have the 'Please select a [whatever]' as the first element in the county combo box, forcing the user to make another selection and thus firing the next observeField trigger to load the cities applicable for a selected county. How do I do that? How do I force another 'Please select a [whatever] element into the list that is returned from the controller function to retrieve the counties for the selected state? Here are some code snippets: /app/controllers/examples_controller.php function getCounties() { $this->set('options', $this->Example->County->find('list', array( 'conditions' => array( 'County.state_id' => $this->data['Example']['state_id'] ), 'group' => array('County.name') ) ) ); $this->render('/examples/ajax_dropdown'); } function add() { if (!empty($this->data)) { $this->Example->create(); if ($this->Example->save($this->data)) { $this->Session->setFlash(__('The Example has been saved', true)); $this->redirect(array('action'=>'index')); } else { $this->Session->setFlash(__('The Example could not be saved. Please, try again.', true)); } } $cities = array(); $counties = array(); $states = $this->Example->State->find('list'); $this->set(compact('cities', 'counties', 'states')); } /app/views/examples/add.ctp <?php echo $form->input( 'state_id', array( 'options' => $states, 'empty' => 'Please select a state' ), null, array( 'id' => 'states', 'label' => 'State' ) ); echo $form->input( 'county_id', array( 'options' => $counties, 'empty' => 'Please select a county' ), null, array( 'id' => 'counties', 'label' => 'County' ) ); $options = array('url' => 'getcounties', 'update' => 'ExampleCountyId'); echo $ajax->observeField('ExampleStateId', $options); Thank you in advance for your kind assistance. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "CakePHP" group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to cake-php+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php?hl=en -~----------~----~----~----~------~----~------~--~---