Tengo este script para popular un campo de selección en función de una selección previa, en este caso las provincias de España en función de la selección de España como país:
Código:
Funciona perfectamente, generando este listado de opciones en el select2:var countryLists = new Array(24) countryLists["0"]= ["A Coruña", "Álava", "Albacete", "Alicante", "Almería", "Asturias", "Ávila", "Badajoz", "Baleares", "Barcelona", "Burgos", "Cáceres", "Cádiz", "Cantabria", "Castellón", "Ciudad Real", "Córdoba", "Cuenca", "Girona", "Granada", "Guadalajara", "Gipuzkoa", "Huelva", "Huesca", "Jaén", "La Rioja", "Las Palmas", "León", "Lérida", "Lugo", "Madrid", "Málaga", "Murcia", "Navarra", "Orense", "Palencia", "Pontevedra", "Salamanca", "Segovia", "Sevilla", "Soria", "Tarragona", "Santa Cruz de Tenerife", "Teruel", "Toledo", "Valencia", "Valladolid", "Vizcaya", "Zamora", "Zaragoza"]; function countryChange(selectObj) { var idx = selectObj.selectedIndex; var which = selectObj.options[idx].value; cList = countryLists[which]; var cSelect = document.getElementById("select2"); var len=cSelect.options.length; while (cSelect.options.length > 0) { cSelect.remove(0); } var newOption; for (var i=0; i<cList.length; i++) { newOption = document.createElement("option"); newOption.value = cList[i]; newOption.text=cList[i]; try { cSelect.add(newOption); } catch (e) { cSelect.appendChild(newOption); } } }
Código:
Correctamente, pero veo que, por una cuestión interna de mi sitio web, el value y el nombre de la opción en sí no pueden ser el mismo, sino que debe de quedar así:<option value="A Coruña">A Coruña</option> <option value="Álava">Álava</option> <option value="Albacete">Albacete</option> ... ... ...
Código:
Estoy intentando modificar el newOption.text en base a la configuración que arriba indicada, pero sin demasiado éxito. Si es que es posible. O quizás dejándolo así y luego reemplazando el texto de la opción.<option value="0">A Coruña</option> <option value="1">Álava</option> <option value="2">Albacete</option> ... ... ...
¿Qué os parece?
Gracias.