Javascript Desplegables
Javascript Desplegables
com/questions/18351921/how-to-populate-a-cascading-dropdown-
with-jquery
$(document).ready(function () {
$('#country').change(function () {
$('#location').append('<option value="Magdeburg">Magdeburg</option><option
value="Duesseldorf">Duesseldorf</option><option value="Leinfelden-
Echterdingen">Leinfelden-Echterdingen</option><option
value="Eschborn">Eschborn</option>')
$('#location').append('<option value="Pecs">Pecs</option><option
value="Budapest">Budapest</option><option value="Debrecen">Debrecen</option>')
$('#location').append('<option value="Midrand">Midrand</option>')
$('#location').append('<option value="Puebla">Puebla</option>')
$('#location').append('<option value="Beijing">Beijing</option>')
$('#location').append('<option value="Barcelona">Barcelona</option>')
});
});
HTML
<label class="page1">Country</label>
<div class="tooltips" title="Please select the country that the customer will primarily be served
from">
<option></option>
<option>Germany</option>
<option>Spain</option>
<option>Hungary</option>
<option>USA</option>
<option>Mexico</option>
<option>South Africa</option>
<option>China</option>
<option>Russia</option>
</select>
</div>
<br />
<br />
<label class="page1">Location</label>
<div class="tooltips" title="Please select the city that the customer is primarily to be served
from.">
</div>
jQuery(function($) {
var locations = {
'Germany': ['Duesseldorf', 'Leinfelden-Echterdingen', 'Eschborn'],
'Spain': ['Barcelona'],
'Hungary': ['Pecs'],
'USA': ['Downers Grove'],
'Mexico': ['Puebla'],
'South Africa': ['Midrand'],
'China': ['Beijing'],
'Russia': ['St. Petersburg'],
}
this one is not visible, and acts as a container for all the elements filtered out by the
selection:
<script>
function filterCity(){
var province = $("#province").find('option:selected').text(); // stores province
$("#option-container").children().appendTo("#city"); // moves <option> contained in #option-
container back to their <select>
var toMove = $("#city").children("[data-province!='"+province+"']"); // selects city elements to move
out
toMove.appendTo("#option-container"); // moves city elements in #option-container
$("#city").removeAttr("disabled"); // enables select
};
</script>
I have created cascading Dropdown for Country, State, City and Zip. It may helpful to someone.
Here only some portion of code are posted you can see full working example on jsfiddle
//Load countries
for (var country in countryStateInfo) {
countySel.options[countySel.options.length] = new Option(country, country);
}
//County Changed
countySel.onchange = function () {
if (this.selectedIndex < 1)
return; // done
$(document).ready(function(){
function remplirListNiveau(idCycle){
console.log('remplirListNiveau');
var $niveauSelect = $("#niveau");
// vider la liste
$niveauSelect.empty();
for (var i = 0; i < ListNiveauCycle.length; i++) {
if(ListNiveauCycle[i].idCycle==idCycle){
var opt1 = document.createElement('option');
opt1.innerHTML = ListNiveauCycle[i].libelleNiveau;
opt1.value = ListNiveauCycle[i].idNiveau;
$niveauSelect.append(opt1);
}
}
}
$("#cycles").change(function(){
remplirListNiveau(this.value)
});
});
SELECT 1
1. <form name="f1">
2. <select name=pais onchange="cambia_provincia()">
3. <option value="0" selected>Seleccione...
4. <option value="1">España
5. <option value="2">Argentina
6. <option value="3">Colombia
7. <option value="4">Francia
8. </select>
9.
10. <select name=provincia>
11. <option value="-">-
12. </select>
13. </form>
14.
SELECT 2
ARRAYS
1. function cambia_provincia(){
2. var pais
3. pais =
document.f1.pais[document.f1.pais.selectedIndex].value
4. if (pais != 0) {
5. mis_provincias=eval("provincias_" + pais)
6. num_provincias = mis_provincias.length
7. document.f1.provincia.length = num_provincias
8. for(i=0;i<num_provincias;i++){
9.
document.f1.provincia.options[i].value=mis_provincias[i]
10.
document.f1.provincia.options[i].text=mis_provincias[i]
11. }
12. }else{
13. document.f1.provincia.length = 1
14. document.f1.provincia.options[0].value = "-"
15. document.f1.provincia.options[0].text = "-"
16. }
17. document.f1.provincia.options[0].selected = true
18. }
19.
20.
CONSULTA A BBDD
1. <?php
2. while($row = mysql_fetch_array($result)) {
3. echo "<option
value=".$row["valor"].">".$row
["enunciado"]."</option>"; }
4. ?>
PASAR LA CONSULTA PHP A JAVASCRIPT
1. <?php
2. $javascript = "<script
language=\"JavaScript\">\n";
3. $javascript .= " var array_js = new
Array();\n";
4. //aqui nos conectariamos a la base de datos,,, a tu gusto!!!!!
Yo uso algo asi:
5. include("conexion_bd.php");
6. $link=Conexion();
7. $valores=mysql_query("select * from
columna",$link) or die (mysql_error());
8.
9. $contador = 0;
10. while ($elem = mysql_fetch_array($valores)) {
11.
$javascript .="columna[".$contador."] =
".$elem['columna2'].";\n";
12. $contador++; }
13. $javascript .= "</script>\n";
14. echo $javascript;
15. ?>
16.
https://solocodigo.com/9550/menu-desplegable-de-paises-y-ciudades/
Here is what I did :
Step 1:
Fill the first field. I posted a method on how to do that on this post or th that post(in french)
Step 2:
-Download this (Right click : save target as ff_XHConn.js)
-Open it and change the class name to ff_XHConn
-Place it in your template folder (in my case it's located in :\templates\siteground-j15-186)
-Then edit the file index.php of your template and add betwenn <head> and </head> this line :
Step 3:
Create a PHP file and place it into a new folder that you created in joomla's folder
As for me, I created a folder named "hierselect" and a file named "requetes.php" (You will see it
appear on the code of the step4 like this : /hierselect/requetes.php)
<?php
while($uneligne2=mysql_fetch_assoc($image2))
$test2 .= "<option
value=\"{$uneligne2['id']}\">{$uneligne2['col2']}</option>\n";
echo $test2;
?>
ff_getElementByName('field2').innerHTML = oXML.responseText;
ff_getElementByName('field2').disabled=false;
};
ff_getElementByName('field2').disabled=true;
ff_getElementByName('field2').value = '';
myConn.connect("/hierselect/requetes.php", "GET",
"field1="+ff_getElementByName('field1').value, fnWhenDone);
https://crosstec.org/en/forums/3-breezingforms-general-forum-english/6417-how-change-
values-to-select-list.html?limit=6&start=12#32087
https://github.com/junioryauricasa/DropDown-Ubigeo
https://desarrolloweb.com/articulos/1281.php
<form name="f1">
<select name=pais onchange="cambia_provincia()">
<option value="0" selected>Seleccione...
<option value="1">España
<option value="2">Argentina
<option value="3">Colombia
<option value="4">Francia
</select>
<select name=provincia>
<option value="-">-
</select>
</form>
var provincias_1=new
Array("-","Andalucía","Asturias","Baleares","Canarias","Castilla
y León","Castilla-La Mancha","...")
var provincias_2=new Array("-","Salta","San Juan","San Luis","La
Rioja","La Pampa","...")
var provincias_3=new
Array("-","Cali","Santamarta","Medellin","Cartagena","...")
var provincias_4=new
Array("-","Aisne","Creuse","Dordogne","Essonne","Gironde
","...")
Podemos combinar los arrays en uno solo, con este literal de array.
var todasProvincias = [
[],
provincias_1,
provincias_2,
provincias_3,
provincias_4,
];
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=todasProvincias[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
Código completo de los selects dependientes
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-
scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<form name="f1">
<select name=pais onchange="cambia_provincia()">
<option value="0" selected>Seleccione...
<option value="1">España
<option value="2">Argentina
<option value="3">Colombia
<option value="4">Francia
</select>
<select name=provincia>
<option value="-">-
</select>
</form>
<script>
var provincias_1=new
Array("-","Andalucía","Asturias","Baleares","Canarias","Castilla
y León","Castilla-La Mancha","...");
var provincias_2=new Array("-","Salta","San Juan","San
Luis","La Rioja","La Pampa","...");
var provincias_3=new
Array("-","Cali","Santamarta","Medellin","Cartagena","...");
var provincias_4=new
Array("-","Aisne","Creuse","Dordogne","Essonne","Gironde
","...");
var todasProvincias = [
[],
provincias_1,
provincias_2,
provincias_3,
provincias_4,
];
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=todasProvincias[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
}
</script>
</body>
</html>