Para mi web utilizo joomla y un componente que se llama RSforms para realizar formularios.
Pues bien, he realizado un formulario y he insertado un código javascript (para poder relacionar dos listas desplegables) que he copiado de esta web: http://demo.rsjoomla.com/dynamic-drop-down-change-form-example
Código:
Además de las dos listas desplegables en el formulario hay campos de nombre, email, captcha...etc. <script type="text/javascript"> function dynamic1(parent,child){ var parent_array = new Array(); parent_array[''] = ['Please select a manufacturer']; parent_array['Audi'] = ['A3','A4','A5','A6','A8','Q5','Q7','S3','S4','S5','S6','S8','RS6']; parent_array['Dacia'] = ['Sandero','Logan']; parent_array['FIAT'] = ['Bravo','Punto','Grande Punto']; parent_array['Peugeot'] = ['207','308','407','607']; parent_array['SEAT'] = ['Ibiza','New Ibiza','Leon']; parent_array['Skoda'] = ['Fabia','Octavia Tour','Octavia 2','Superb']; var thechild = document.getElementById(child); thechild.options.length = 0; var parent_value = parent.options[parent.selectedIndex].value; if (!parent_array[parent_value]) parent_value = ''; thechild.options.length = parent_array[parent_value].length; for(var i=0;i<parent_array[parent_value].length;i++){ thechild.options[i].text = parent_array[parent_value][i]; thechild.options[i].value = parent_array[parent_value][i];} } </script>
Mi problema surge a la hora de enviar el formulario, cuando no introduces algún campo que requiere validación o cuando fallas el captcha, ya que resulta que la "lista padre" se mantiene con el valor que eligió el usuario, pero la "lista hijo" aparece vacía, y para volver a elegir un valor se debe cambiar la selección de la "lista padre" (sino no te deja elegir valor).
Supongo que la solución sería que una vez enviado el formulario, en caso de error de validación, resetear la lista padre a su valor predeterminado (en el ejemplo "Please select a manufacturer"), pero como no tengo ni idea de Javascript... :(
Espero que alguién pueda ayudarme, muchas gracias y perdón por liarme tanto...