datalist dependent on another datalist

0

I would like to be able to create a form with datalist dependent on other datalist for provinces and localities for example. I have found a good datalist compatible with all browsers included safari which is not supported natively. I hope you can help me, this is the code:

html:

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="utf-8" />
    <title>Pure JS datalist polyfill</title>
    <link rel="stylesheet" href="css/datalist.css"/>
<body>

  <div class="main">
    <input id="input" type="text" list="states" placeholder="Elige provincia">
    <datalist id="states">
      <option value="Alabama">
      <option value="Alaska">
      <option value="Arizona">
      <option value="Arkansas">
      <option value="California">
      <option value="Colorado">
      <option value="Connecticut">
      <option value="Delaware">
      <option value="Florida">
      <option value="Georgia">
      <option value="Hawaii">
      <option value="Idaho">
      <option value="Illinois">
      <option value="Indiana">
      <option value="Iowa">
      <option value="Kansas">
      <option value="Kentucky">
      <option value="Louisiana">
      <option value="Maine">
      <option value="Maryland">
      <option value="Massachusetts">
      <option value="Michigan">
      <option value="Minnesota">
      <option value="Mississippi">
      <option value="Missouri">
      <option value="Montana">
      <option value="Nebraska">
      <option value="Nevada">
      <option value="New Hampshire">
      <option value="New Jersey">
      <option value="New Mexico">
      <option value="New York">
      <option value="North Carolina">
      <option value="North Dakota">
      <option value="Ohio">
      <option value="Oklahoma">
      <option value="Oregon">
      <option value="Pennsylvania">
      <option value="Rhode Island">
      <option value="South Carolina">
      <option value="South Dakota">
      <option value="Tennessee">
      <option value="Texas">
      <option value="Utah">
      <option value="Vermont">
      <option value="Virginia">
      <option value="Washington">
      <option value="West Virginia">
      <option value="Wisconsin">
      <option value="Wyoming">
    </datalist>
  </div>
  <script>
    (function() {
    var inputs = document.getElementsByTagName('input');
    for( var i = 0; i < inputs.length; i++ ) {
        var input = inputs[i];
        input.onchange = function(evt) {
            var elem = evt ? evt.target : window.event.srcElement;
          //  alert('new value: ' + elem.value);
        };
      }
  }());
  </script>

  <script src="js/datalist.js"></script>

  </body>
</html>

css to see more or less well:

#input {
    width: 300px;
    height: 44px;
    font-size: 16px;
    padding: 10px;
    position: absolute;
    top: 100px;
    left: 100px;
    border-radius-ourline: 15px;
}

.datalist-polyfill {
    list-style: none;
    display: none;
    background: white;
    box-shadow: 0 2px 2px #999;
    position: absolute;
    left: 0;
    top: 0;
    margin: 0;
    padding: 0;
    max-height: 300px;
    overflow-y: auto;
}

.datalist-polyfill:empty {
    display: none !important;
}

    .datalist-polyfill > li {
        padding: 3px;
        font: 13px "Lucida Grande", Sans-Serif;
    }

    .datalist-polyfill__active {
        background: #3875d7;
        color: white;
    }

js:

(function(document) {
    var IE_SELECT_ATTRIBUTE = 'data-datalist';
    var LIST_CLASS = 'datalist-polyfill';
    var ACTIVE_CLASS = 'datalist-polyfill__active';

    var datalistSupported = !!(document.createElement('datalist') && window.HTMLDataListElement);
    var ua = navigator.userAgent;

    // Android does not have actual support
    var isAndroidBrowser = ua.match(/Android/) && !ua.match(/(Firefox|Chrome|Opera|OPR)/);
    if( datalistSupported && !isAndroidBrowser ) {
        return;
    }

    var inputs = document.querySelectorAll('input[list]');

    var triggerEvent = function(elem, eventType) {
        var event;
        if (document.createEvent) {
            event = document.createEvent("HTMLEvents");
            event.initEvent(eventType, true, true);
            elem.dispatchEvent(event);
        } else {
            event = document.createEventObject();
            event.eventType = eventType;
            elem.fireEvent("on" + eventType, event);
        }
    };

    for( var i = 0; i < inputs.length; i++ ) {
        var input = inputs[i];
        var listId = input.getAttribute('list');
        var datalist = document.getElementById(listId);
        if( !datalist ) {
            console.error('No datalist found for input: ' + listId);
            return;
        }

        // Only visible to <= IE9
        var childSelect = document.querySelector('select[' + IE_SELECT_ATTRIBUTE + '="' + listId + '"]');
        var parent = childSelect || datalist;
        var listItems = parent.getElementsByTagName('option');
        convert(input, datalist, listItems);
        if( childSelect ) {
            childSelect.parentNode.removeChild( childSelect );
        }
    }

    function convert(input, datalist, listItems) {
        var fakeList = document.createElement('ul');
        var visibleItems = null;
        fakeList.id = listId;
        fakeList.className = LIST_CLASS;
        document.body.appendChild( fakeList );

        var scrollValue = 0;

          // Used to prevent reflow
        var tempItems = document.createDocumentFragment();

        for( var i = 0; i < listItems.length; i++ ) {
            var item = listItems[i];
            var li = document.createElement('li');
            li.innerText = item.value;
            tempItems.appendChild( li );
        }
        fakeList.appendChild( tempItems );
        var fakeItems = fakeList.childNodes;
        var eachItem = function(callback) {
            for( var i = 0; i < fakeItems.length; i++ ) {
                callback(fakeItems[i]);
            }
        };
        var listen = function(elem, event, func) {
            if( elem.addEventListener ) {
                elem.addEventListener(event, func, false);
            } else {
                elem.attachEvent('on' + event, func);
            }
        };

        datalist.parentNode.removeChild( datalist );

        listen(input, 'focus', function() {
            // Reset scroll
            fakeList.scrollTop = 0;
            scrollValue = 0;
        });

        listen(input, 'blur', function(evt) {
            // If this fires immediately, it prevents click-to-select from working
            setTimeout(function() {
                fakeList.style.display = 'none';
                eachItem( function(item) {
                    // Note: removes all, not just ACTIVE_CLASS, but should be safe
                    item.className = '';
                });
            }, 100);
        });

        var positionList = function() {
            fakeList.style.top = input.offsetTop + input.offsetHeight + 'px';
            fakeList.style.left = input.offsetLeft + 'px';
            fakeList.style.width = input.offsetWidth + 'px';
        };

        var itemSelected = function(item) {
            input.value = item.innerText;
            triggerEvent(input, 'change');
            setTimeout(function() {
                fakeList.style.display = 'none';
            }, 100);
        };

        var buildList = function(e) {
            // Build datalist
            fakeList.style.display = 'block';
            positionList();
            visibleItems = [];
            eachItem( function(item) {
                // Note: removes all, not just ACTIVE_CLASS, but should be safe
                var query = input.value.toLowerCase();
                var isFound = query.length && item.innerText.toLowerCase().indexOf( query ) > -1;
                if( isFound ) {
                    visibleItems.push( item );
                }
                item.style.display = isFound ? 'block' : 'none';
            } );
        };

        listen(input, 'keyup', buildList);
        listen(input, 'focus', buildList);

        // Don't want to use :hover in CSS so doing this instead
        // really helps with arrow key navigation
        eachItem( function(item) {
            // Note: removes all, not just ACTIVE_CLASS, but should be safe
            listen(item, 'mouseover', function(evt) {
                eachItem( function(_item) {
                    _item.className = item == _item ? ACTIVE_CLASS : '';
                });
            });
            listen(item, 'mouseout', function(evt) {
                item.className = '';
            });
            // Mousedown fires before native 'change' event is triggered
            // So we use this instead of click so only the new value is passed to 'change'
            listen(item, 'mousedown', function(evt) {
                itemSelected(item);
            });
        });

        listen(window, 'resize', positionList);

        listen(input, 'keydown', function(e) {
            var activeItem = fakeList.querySelector("." + ACTIVE_CLASS);
            if( !visibleItems.length ) {
                return;
            }

            var lastVisible = visibleItems[ visibleItems.length-1 ];
            var datalistItemsHeight = lastVisible.offsetTop + lastVisible.offsetHeight;

            // up/down arrows
            var isUp = e.keyCode == 38;
            var isDown = e.keyCode == 40;
            if ( (isUp || isDown) ) {
                if( isDown && !activeItem ) {
                    visibleItems[0].className = ACTIVE_CLASS;
                } else if (activeItem) {
                    var prevVisible = null;
                    var nextVisible = null;
                    for( var i = 0; i < visibleItems.length; i++ ) {
                        var visItem = visibleItems[i];
                        if( visItem == activeItem ) {
                            prevVisible = visibleItems[i-1];
                            nextVisible = visibleItems[i+1];
                            break;
                        }
                    }

                    activeItem.className = '';
                    if ( isUp ) {
                        if( prevVisible ) {
                            prevVisible.className = ACTIVE_CLASS;
                            if ( prevVisible.offsetTop < fakeList.scrollTop ) {
                                fakeList.scrollTop -= prevVisible.offsetHeight;
                            }
                        } else {
                            visibleItems[visibleItems.length - 1].className = ACTIVE_CLASS;
                        }
                    }
                    if ( isDown ) {
                        if( nextVisible ) { 
                            nextVisible.className = ACTIVE_CLASS;
                            if( nextVisible.offsetTop + nextVisible.offsetHeight > fakeList.scrollTop + fakeList.offsetHeight ) {
                                fakeList.scrollTop += nextVisible.offsetHeight;
                            }
                        } else {
                            visibleItems[0].className = ACTIVE_CLASS;
                        }
                    }
                }
            }

            // return or tab key
            if ( activeItem && (e.keyCode == 13 || e.keyCode == 9) ){
                itemSelected(activeItem);
            }
        });
    }
}(document));
    
asked by AvrSoft 26.10.2018 в 14:14
source

3 answers

0

Maybe something like that is what you need. At the beginning of my code I have a data variable that contains all the necessary correspondences. For example if in the first drop-down list I choose "a" in the second list I can choose "ad", "ae" and "af" etc. . .

In the code that you present, you lack data. If for example I want to choose Alabama, what data can I see in the second drop-down list? And in the third?

let data = {
  "a": { "ad":["adg","adh","adi"], "ae":["aeg","aeh","aei"], "af":["aeg","aeh","aei"] },
  "b": { "bd":["bdg","bdh","bdi"], "be":["beg","beh","bei"], "bf":["beg","beh","bei"] },
  "c": { "cd":["cdg","cdh","cdi"], "ae":["ceg","ceh","cei"], "cf":["ceg","ceh","cei"] }
};

let departamento, provincia;

sss.addEventListener("change", function() {
  ttt.disabled = false;
  departamento = sss.options[sss.selectedIndex].value;
  let seleccionado = data[departamento];
  let opciones = Object.keys(seleccionado);
  crearOpciones(opciones,ttt)
  
});
ttt.addEventListener("change", function() {
  vvv.disabled = false;
  provincia = ttt.options[ttt.selectedIndex].value;
  console.log(provincia)
  let seleccionado = data[departamento][provincia];
  crearOpciones(seleccionado,vvv)
  
});


function crearOpciones(o,parent){
  for(let i = 0; i < o.length; i++){
    let opt = document.createElement("option");
    opt.value = o[i];
    opt.innerHTML = "Distrito "+ o[i];
    parent.appendChild(opt);
  }
}
<label>Departamento: </label>
<select name="sss" id="sss">
  <option value="">Seleccione una opcion</option>
  <option value="a">Departamento a</option>
  <option value="b">Departamento b</option> 
  <option value="c">Departamento c</option> 
  </select>
   <br><br>
   <label>Provincia: </label>
   <select name="ttt" id="ttt"  disabled>
       <option value="">Seleccione una opcion</option>
 
   </select>
   <br><br>
    <label>Distrito: </label>
   <select name="vvv" id="vvv"  disabled>
   <option value="">Seleccione una opcion</option>
     
 </select>
    
answered by 26.10.2018 в 16:46
0
<!DOCTYPE html>
<HTML>
  <head>
    <meta charset="utf-8">
    <link rel="stylesheet" type="text/css" href="css/styles.css">
  </head>
  <body>

    <form name="f1">
      <select name=pais onchange="cambia_provincia()" class="iu-pg-select pg-select-12" data-iuname="Seleccionar Provincia"> 
        <option value="0" selected>Elija provincia
        <option value="1">A Coruña 
        <option value="2">Álava
        <option value="3">Albacete
        <option value="4">Alicante
        <option value="5">Almería
        <option value="6">Asturias
        <option value="7">Ávila
        <option value="8">Badajoz
        <option value="9">Islas Baleares
        <option value="10">Barcelona
        <option value="11">Burgos
        <option value="12">Cáceres
        <option value="13">Cádiz
        <option value="14">Cantabria
        <option value="15">Castellón
        <option value="16">Ciudad Real
        <option value="17">Córdoba
        <option value="18">Cuenca
        <option value="19">Girona
        <option value="20">Granada
        <option value="21">Guadalajara
        <option value="22">Guipúzcoa
        <option value="23">Huelva
        <option value="24">Huesca
        <option value="25">Jaén
        <option value="26">La Rioja
        <option value="27">Las Palmas
        <option value="28">León
        <option value="29">Lleida
        <option value="30">Lugo
        <option value="31">Madrid
        <option value="32">Málaga
        <option value="33">Murcia
        <option value="34">Navarra
        <option value="35">Orense
        <option value="36">Palencia
        <option value="37">Pontevedra
        <option value="38">Salamanca
        <option value="39">Segovia
        <option value="40">Sevilla
        <option value="41">Soria
        <option value="42">Tarragona
        <option value="43">Santa Cruz de Tenerife
        <option value="44">Teruel
        <option value="45">Toledo
        <option value="46">Valencia
        <option value="47">Valladolid
        <option value="48">Vizcaya
        <option value="49">Zamora
        <option value="50">Zaragoza
      </select>
      <select name=provincia class="iu-pg-select selectores pg-select" data-iuname="Seleccionar Localidad"> 
        <option value="-">...
      </select> 

      <script src="js/2-select.js"></script>

    </form>

  </body>
</HTML>
    
answered by 26.10.2018 в 17:00
0
        var provincias_1=new Array("Elija localidad...","Abegondo","Ames","Aranga","Ares","Arteixo","Arzúa","Baña, A","Bergondo","Betanzos","Boimorto","Boiro","Boqueixón","Brión","Cabana de Bergantiños","Cabanas","Camariñas","Cambre","Capela, A","Carballo","Cariño","Carnota","Carral","Cedeira","Cee","Cerceda","Cerdido","Cesuras","Coirós","Corcubión","Coristanco","Coruña, A","Culleredo","Curtis","Dodro","Dumbría","Fene","Ferrol","Fisterra","Frades","Irixoa","Laracha, A","Laxe","Lousame","Malpica de Bergantiños","Mañón","Mazaricos","Melide","Mesía","Miño","Moeche","Monfero","Mugardos","Muros","Muxía","Narón","Neda","Negreira","Noia","Oleiros","Ordes","Oroso","Ortigueira","Outes","Oza dos Ríos","Paderne","Padrón","Pino, O","Pobra do Caramiñal, A","Ponteceso","Pontedeume","Pontes de García Rodríguez, As","Porto do Son","Rianxo","Ribeira","Rois","Sada","San Sadurniño","Santa Comba","Santiago de Compostela","Santiso","Sobrado","Somozas, As","Teo","Toques","Tordoia","Touro","Trazo","Val do Dubra","Valdoviño","Vedra","Vilarmaior","Vilasantar","Vimianzo","Zas") 

        var provincias_2=new Array("Elija localidad...","Alegría-Dulantzi","Amurrio","Añana","Aramaio","Armiñón","Arraia-Maeztu","Arrazua-Ubarrundia","Artziniega","Asparrena","Ayala/Aiara","Baños de Ebro/Mañueta","Barrundia","Berantevilla","Bernedo","Campezo/Kanpezu","Elburgo/Burgelu","Elciego","Elvillar/Bilar","Erriberagoitia/Ribera Alta","Harana/Valle de Arana","Iruña Oka/Iruña de Oca","Iruraiz-Gauna","Kripan","Kuartango","Labastida/Bastida","Lagrán","Laguardia","Lanciego/Lantziego","Lantarón","Lapuebla de Labarca","Laudio/Llodio","Legutio","Leza","Moreda de Álava","Navaridas","Okondo","Oyón-Oion","Peñacerrada-Urizaharra","Ribera Baja/Erribera Beitia","Salvatierra/Agurain","Samaniego","San Millán/Donemiliaga","Urkabustaiz","Valdegovía/Gaubea","Villabuena de Álava/Eskuernaga","Vitoria-Gasteiz","Yécora/Iekora","Zalduondo","Zambrana","Zigoitia","Zuia") 
        var provincias_3=new Array("Elija localidad...","Abengibre","Alatoz","Albacete","Albatana","Alborea","Alcadozo","Alcalá del Júcar","Alcaraz","Almansa","Alpera","Ayna","Balazote","Ballestero, El","Balsa de Ves","Barrax","Bienservida","Bogarra","Bonete","Bonillo, El","Carcelén","Casas de Juan Núñez","Casas de Lázaro","Casas de Ves","Casas-Ibáñez","Caudete","Cenizate","Chinchilla de Monte-Aragón","Corral-Rubio","Cotillas","Elche de la Sierra","Férez","Fuensanta","Fuente-Álamo","Fuentealbilla","Gineta, La","Golosalvo","Hellín","Herrera, La","Higueruela","Hoya-Gonzalo","Jorquera","Letur","Lezuza","Liétor","Madrigueras","Mahora","Masegoso","Minaya","Molinicos","Montalvos","Montealegre del Castillo","Motilleja","Munera","Navas de Jorquera","Nerpio","Ontur","Ossa de Montiel","Paterna del Madera","Peñas de San Pedro","Peñascosa","Pétrola","Povedilla","Pozo Cañada","Pozohondo","Pozo-Lorente","Pozuelo","Recueja, La","Riópar","Robledo","Roda, La","Salobre","San Pedro","Socovos","Tarazona de la Mancha","Tobarra","Valdeganga","Vianos","Villa de Ves","Villalgordo del Júcar","Villamalea","Villapalacios","Villarrobledo","Villatoya","Villavaliente","Villaverde de Guadalimar","Viveros","Yeste") 
        var provincias_4=new Array("Elija localidad...","Adsubia","Agost","Agres","Aigües","Albatera","Alcalalí","Alcocer de Planes","Alcoleja","Alcoy/Alcoi","Alfafara","Alfàs del Pi, l'","Algorfa","Algueña","Alicante/Alacant","Almoradí","Almudaina","Alqueria d'Asnar, l'","Altea","Aspe","Balones","Banyeres de Mariola","Benasau","Beneixama","Benejúzar","Benferri","Beniarbeig","Beniardá","Beniarrés","Benidoleig","Benidorm","Benifallim","Benifato","Benigembla","Benijófar","Benilloba","Benillup","Benimantell","Benimarfull","Benimassot","Benimeli","Benissa","Benitachell/Poble Nou de Benitatxell, el","Biar","Bigastro","Bolulla","Busot","Callosa de Segura","Callosa d'En Sarrià","Calp","Campello, el","Campo de Mirra/Camp de Mirra, el","Cañada","Castalla","Castell de Castells","Castell de Guadalest, el","Catral","Cocentaina","Confrides","Cox","Crevillent","Daya Nueva","Daya Vieja","Dénia","Dolores","Elche/Elx","Elda","Facheca","Famorca","Finestrat","Fondó de les Neus, el/Hondón de las Nieves","Formentera del Segura","Gaianes","Gata de Gorgos","Gorga","Granja de Rocamora","Guardamar del Segura","Hondón de los Frailes","Ibi","Jacarilla","Jávea/Xàbia","Jijona/Xixona","Llíber","Lorcha/Orxa, l'","Millena","Monforte del Cid","Monóvar/Monòver","Montesinos, Los","Murla","Muro de Alcoy","Mutxamel","Novelda","Nucia, la","Ondara","Onil","Orba","Orihuela","Orxeta","Parcent","Pedreguer","Pego","Penàguila","Petrer","Pilar de la Horadada","Pinós, el/Pinoso","Planes","Poblets, els","Polop","Quatretondeta","Rafal","Ràfol d'Almúnia, el","Redován","Relleu","Rojales","Romana, la","Sagra","Salinas","San Fulgencio","San Isidro","San Miguel de Salinas","San Vicente del Raspeig/Sant Vicent del Raspeig","Sanet y Negrals","Sant Joan d'Alacant","Santa Pola","Sax","Sella","Senija","Tàrbena","Teulada","Tibi","Tollos","Tormos","Torremanzanas/Torre de les Maçanes, la","Torrevieja","Vall d'Alcalà, la","Vall de Gallinera","Vall de Laguar, la","Vall d'Ebo, la","Verger, el","Villajoyosa/Vila Joiosa, la","Villena","Xaló")
        var provincias_5=new Array("Elija localidad...","Abla","Abrucena","Adra","Albánchez","Alboloduy","Albox","Alcolea","Alcóntar","Alcudia de Monteagud","Alhabia","Alhama de Almería","Alicún","Almería","Almócita","Alsodux","Antas","Arboleas","Armuña de Almanzora","Bacares","Bayárcal","Bayarque","Bédar","Beires","Benahadux","Benitagla","Benizalón","Bentarique","Berja","Canjáyar","Cantoria","Carboneras","Castro de Filabres","Chercos","Chirivel","Cóbdar","Cuevas del Almanzora","Dalías","Ejido, El","Enix","Felix","Fines","Fiñana","Fondón","Gádor","Gallardos, Los","Garrucha","Gérgal","Huécija","Huércal de Almería","Huércal-Overa","Illar","Instinción","Laroya","Láujar de Andarax","Líjar","Lubrín","Lucainena de las Torres","Lúcar","Macael","María","Mojácar","Mojonera, La","Nacimiento","Níjar","Ohanes","Olula de Castro","Olula del Río","Oria","Padules","Partaloa","Paterna del Río","Pechina","Pulpí","Purchena","Rágol","Rioja","Roquetas de Mar","Santa Cruz de Marchena","Santa Fe de Mondújar","Senés","Serón","Sierro","Somontín","Sorbas","Suflí","Tabernas","Taberno","Tahal","Terque","Tíjola","Tres Villas, Las","Turre","Turrillas","Uleila del Campo","Urrácal","Velefique","Vélez-Blanco","Vélez-Rubio","Vera","Viator","Vícar","Zurgena")
        var provincias_6=new Array("Elija localidad...","Allande","Aller","Amieva","Avilés","Belmonte de Miranda","Bimenes","Boal","Cabrales","Cabranes","Candamo","Cangas de Onís","Cangas del Narcea","Caravia","Carreño","Caso","Castrillón","Castropol","Coaña","Colunga","Corvera de Asturias","Cudillero","Degaña","Franco, El","Gijón","Gozón","Grado","Grandas de Salime","Ibias","Illano","Illas","Langreo","Laviana","Lena","Llanera","Llanes","Mieres","Morcín","Muros de Nalón","Nava","Navia","Noreña","Onís","Oviedo","Parres","Peñamellera Alta","Peñamellera Baja","Pesoz","Piloña","Ponga","Pravia","Proaza","Quirós","Regueras, Las","Ribadedeva","Ribadesella","Ribera de Arriba","Riosa","Salas","San Martín de Oscos","San Martín del Rey Aurelio","San Tirso de Abres","Santa Eulalia de Oscos","Santo Adriano","Sariego","Siero","Sobrescobio","Somiedo","Soto del Barco","Tapia de Casariego","Taramundi","Teverga","Tineo","Valdés","Vegadeo","Villanueva de Oscos","Villaviciosa","Villayón","Yernes y Tameza")
        var provincias_7=new Array("Elija localidad...","Adanero","Adrada, La","Albornos","Aldeanueva de Santa Cruz","Aldeaseca","Aldehuela, La","Amavida","Arenal, El","Arenas de San Pedro","Arevalillo","Arévalo","Aveinte","Avellaneda","Ávila","Barco de Ávila, El","Barraco, El","Barromán","Becedas","Becedillas","Bercial de Zapardiel","Berlanas, Las","Bernuy-Zapardiel","Berrocalejo de Aragona","Blascomillán","Blasconuño de Matacabras","Blascosancho","Bohodón, El","Bohoyo","Bonilla de la Sierra","Brabos","Bularros","Burgohondo","Cabezas de Alambre","Cabezas del Pozo","Cabezas del Villar","Cabizuela","Canales","Candeleda","Cantiveros","Cardeñosa","Carrera, La","Casas del Puerto","Casasola","Casavieja","Casillas","Castellanos de Zapardiel","Cebreros","Cepeda la Mora","Chamartín","Cillán","Cisla","Colilla, La","Collado de Contreras","Collado del Mirón","Constanzana","Crespos","Cuevas del Valle","Diego del Carpio","Donjimeno","Donvidas","Espinosa de los Caballeros","Flores de Ávila","Fontiveros","Fresnedilla","Fresno, El","Fuente el Saúz","Fuentes de Año","Gallegos de Altamiros","Gallegos de Sobrinos","Garganta del Villar","Gavilanes","Gemuño","Gil García","Gilbuena","Gimialcón","Gotarrendura","Grandes y San Martín","Guisando","Gutierre-Muñoz","Hernansancho","Herradón de Pinares","Herreros de Suso","Higuera de las Dueñas","Hija de Dios, La","Horcajada, La","Horcajo de las Torres","Hornillo, El","Hoyo de Pinares, El","Hoyocasero","Hoyorredondo","Hoyos de Miguel Muñoz","Hoyos del Collado","Hoyos del Espino","Hurtumpascual","Junciana","Langa","Lanzahíta","Llanos de Tormes, Los","Losar del Barco, El","Madrigal de las Altas Torres","Maello","Malpartida de Corneja","Mamblas","Mancera de Arriba","Manjabálago","Marlín","Martiherrero","Martínez","Mediana de Voltoya","Medinilla","Mengamuñoz","Mesegar de Corneja","Mijares","Mingorría","Mirón, El","Mironcillo","Mirueña de los Infanzones","Mombeltrán","Monsalupe","Moraleja de Matacabras","Muñana","Muñico","Muñogalindo","Muñogrande","Muñomer del Peco","Muñopepe","Muñosancho","Muñotello","Narrillos del Álamo","Narrillos del Rebollar","Narros de Saldueña","Narros del Castillo","Narros del Puerto","Nava de Arévalo","Nava del Barco","Navacepedilla de Corneja","Navadijos","Navaescurial","Navahondilla","Navalacruz","Navalmoral","Navalonguilla","Navalosa","Navalperal de Pinares","Navalperal de Tormes","Navaluenga","Navaquesera","Navarredonda de Gredos","Navarredondilla","Navarrevisca","Navas del Marqués, Las","Navatalgordo","Navatejares","Neila de San Miguel","Niharra","Ojos-Albos","Orbita","Oso, El","Padiernos","Pajares de Adaja","Palacios de Goda","Papatrigo","Parral, El","Pascualcobo","Pedro Bernardo","Pedro-Rodríguez","Peguerinos","Peñalba de Ávila","Piedrahíta","Piedralaves","Poveda","Poyales del Hoyo","Pozanco","Pradosegar","Puerto Castilla","Rasueros","Riocabado","Riofrío","Rivilla de Barajas","Salobral","Salvadiós","San Bartolomé de Béjar","San Bartolomé de Corneja","San Bartolomé de Pinares","San Esteban de los Patos","San Esteban de Zapardiel","San Esteban del Valle","San García de Ingelmos","San Juan de Gredos","San Juan de la Encinilla","San Juan de la Nava","San Juan del Molinillo","San Juan del Olmo","San Lorenzo de Tormes","San Martín de la Vega del Alberche","San Martín del Pimpollar","San Miguel de Corneja","San Miguel de Serrezuela","San Pascual","San Pedro del Arroyo","San Vicente de Arévalo","Sanchidrián","Sanchorreja","Santa Cruz de Pinares","Santa Cruz del Valle","Santa María de los Caballeros","Santa María del Arroyo","Santa María del Berrocal","Santa María del Cubillo","Santa María del Tiétar","Santiago del Collado","Santiago del Tormes","Santo Domingo de las Posadas","Santo Tomé de Zabarcos","Serrada, La","Serranillos","Sigeres","Sinlabajos","Solana de Ávila","Solana de Rioalmar","Solosancho","Sotalbo","Sotillo de la Adrada","Tiemblo, El","Tiñosillos","Tolbaños","Tormellas","Tornadizos de Ávila","Torre, La","Tórtoles","Umbrías","Vadillo de la Sierra","Valdecasa","Vega de Santa María","Velayos","Villaflor","Villafranca de la Sierra","Villanueva de Ávila","Villanueva de Gómez","Villanueva del Aceral","Villanueva del Campillo","Villar de Corneja","Villarejo del Valle","Villatoro","Viñegra de Moraña","Vita","Zapardiel de la Cañada","Zapardiel de la Ribera")
        var provincias_8=new Array("Elija localidad...","_")
        var provincias_9=new Array("Elija localidad...","_")
        var provincias_10=new Array("Elija localidad...","_")
        var provincias_11=new Array("Elija localidad...","_")
        var provincias_12=new Array("Elija localidad...","_")
        var provincias_13=new Array("Elija localidad...","_")
        var provincias_14=new Array("Elija localidad...","_")
        var provincias_15=new Array("Elija localidad...","_")
        var provincias_16=new Array("Elija localidad...","_")
        var provincias_17=new Array("Elija localidad...","_")
        var provincias_18=new Array("Elija localidad...","_")
        var provincias_19=new Array("Elija localidad...","_")
        var provincias_20=new Array("Elija localidad...","_")
        var provincias_21=new Array("Elija localidad...","_")
        var provincias_22=new Array("Elija localidad...","_")
        var provincias_23=new Array("Elija localidad...","_")
        var provincias_24=new Array("Elija localidad...","_")
        var provincias_25=new Array("Elija localidad...","_")
        var provincias_26=new Array("Elija localidad...","_")
        var provincias_27=new Array("Elija localidad...","_")
        var provincias_28=new Array("Elija localidad...","_")
        var provincias_29=new Array("Elija localidad...","_")
        var provincias_30=new Array("Elija localidad...","_")
        var provincias_31=new Array("Elija localidad...","_")
        var provincias_32=new Array("Elija localidad...","_")
        var provincias_33=new Array("Elija localidad...","_")
        var provincias_34=new Array("Elija localidad...","_")
        var provincias_35=new Array("Elija localidad...","_")
        var provincias_36=new Array("Elija localidad...","_")
        var provincias_37=new Array("Elija localidad...","_")
        var provincias_38=new Array("Elija localidad...","_")
        var provincias_39=new Array("Elija localidad...","_")
        var provincias_40=new Array("Elija localidad...","_")
        var provincias_41=new Array("Elija localidad...","_")
        var provincias_42=new Array("Elija localidad...","_")
        var provincias_43=new Array("Elija localidad...","_")
        var provincias_44=new Array("Elija localidad...","_")
        var provincias_45=new Array("Elija localidad...","_")
        var provincias_46=new Array("Elija localidad...","_")
        var provincias_47=new Array("Elija localidad...","_")
        var provincias_48=new Array("Elija localidad...","_")
        var provincias_49=new Array("Elija localidad...","_")
        var provincias_50=new Array("Elija localidad...","_")   


function cambia_provincia(){ 
    //tomo el valor del select del pais elegido 
    var pais 
    pais = document.f1.pais[document.f1.pais.selectedIndex].value 
    //miro a ver si el pais está definido 
    if (pais != 0) { 
        //si estaba definido, entonces coloco las opciones de la provincia correspondiente. 
        //selecciono el array de provincia adecuado 
        mis_provincias=eval("provincias_" + pais) 
        //calculo el numero de provincias 
        num_provincias = mis_provincias.length 
        //marco el número de provincias en el select 
        document.f1.provincia.length = num_provincias 
        //para cada provincia del array, la introduzco en el select 
        for(i=0;i<num_provincias;i++){ 
            document.f1.provincia.options[i].value=mis_provincias[i] 
            document.f1.provincia.options[i].text=mis_provincias[i] 
        }   
    }else{ 
        //si no había provincia seleccionada, elimino las provincias del select 
        document.f1.provincia.length = 1 
        //coloco un guión en la única opción que he dejado 
        document.f1.provincia.options[0].value = "-" 
        document.f1.provincia.options[0].text = "-" 
    } 
    //marco como seleccionada la opción primera de provincia 
    document.f1.provincia.options[0].selected = true 
    
answered by 26.10.2018 в 17:03