Generování obsahu select podle jiného select – JavaScript, AJAX, jQuery – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Generování obsahu select podle jiného select – JavaScript, AJAX, jQuery – Fórum – Programujte.comGenerování obsahu select podle jiného select – JavaScript, AJAX, jQuery – Fórum – Programujte.com

 

Genua0
Newbie
19. 1. 2008   #1
-
0
-

Zdravím, potřeboval bych poradit.

Mám dva selecty. V první je kraj a podle toho, jaký zadám kraj, tak se mi zobrazí města ve druhém selectu.
Po stránce PHP vím, jak vše vygenerovat. Pouze nevím, jak to propojit s js..

Děkuji za rady.

Nahlásit jako SPAM
IP: 89.103.4.–
19. 1. 2008   #2
-
0
-

Je tu nekolik moznosti:

1) Mit prepripravene ty SELECTY a akorat vzdycky zobrazit ten spravny a zmenit jeho jmeno treba na "mesto" (to abys potom nemel bordel v tom PHP pri prijimani dat z formulare)
2) Mit jeden fyzycky SELECT a skryvat a odkryvat ty polozky pomoci display:none/block - s tim ma ale podle mych zkusenosti opera
3) Mit sice jeden fyzycky SELECT ale prikazde zmene vymazat vsechny polozky a pak tam znovy nasoupat vhodne. V JS bys je mel nadefinovane treba jako 2D pole.
4) Ajax. Podobne jako bod 3, vzdy bysis ty polozky stahnul z nejakeho PHP skriptu a vlozil je tam.

Nahlásit jako SPAM
IP: 81.30.238.–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
Genua0
Newbie
19. 1. 2008   #3
-
0
-

Našel jsem si pár věcí o Ajaxu, ač je toho na českém internetu celkem málo a zkusím to přes něj asi. Zatím mi to trochu blbne v Opeře, ale je to administrační část, takže to ani nevadí...Jelikož to bude pouze pro mě..

Nahlásit jako SPAM
IP: 89.103.4.–
Genua0
Newbie
19. 1. 2008   #4
-
0
-

Tak tedy podle jednoho článku na netu jsem vytvořil to, co bych chtěl. A dokonce to jede.. Pouze mě to výsledky otevírá v Alert oknu, což jsem nechtěl. Chtěl jsem, aby se vypsal select přímo do stránky

Jak to mám?

  <script type="text/javascript">


function mesto() {
var http_request = false;
var string = document.getElementById('string').value;
var request = "string="+string;

if (window.XMLHttpRequest) {
http_request = new XMLHttpRequest();
} else if (window.ActiveXObject) {
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (eror) {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
}
}

http_request.onreadystatechange = function() { zpracuj(http_request); };
http_request.open('POST', 'include/mesta.php', true);
http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
http_request.send(request);
}

function zpracuj(http_request) {
if (http_request.readyState == 4) {
if (http_request.status == 200) {
alert(http_request.responseText);
} else {
alert('Chyba');
}
}
}
</script>


Mesta.php vracejí celý select a funkce mesto() je volana pri kliknuti na pozadovany kraj..
Dekuji za odpovedi

Nahlásit jako SPAM
IP: 89.103.4.–
Genua0
Newbie
19. 1. 2008   #5
-
0
-

Aaaa...jsem slepý.. Už to mám.. Stačí po zjištění 200, což znamená že server vrátil vše, co má dát do nějakýho ID na stránce text...

Nahlásit jako SPAM
IP: 89.103.4.–
Genua0
Newbie
19. 1. 2008   #6
-
0
-

Vše funguje jak má, ovšem pouze na první výběr, jakmile zadám do prvního selectu něco jiného, tak s emi druhý select neaktializuje. Cos tím mohu dlěat?

Nahlásit jako SPAM
IP: 89.103.4.–
19. 1. 2008   #7
-
0
-

a mas to mesto() jako onchange udalost u toho prvniho policka?

Nahlásit jako SPAM
IP: 81.30.238.–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
Genua0
Newbie
19. 1. 2008   #8
-
0
-

Ano mám. První se mi načte a pak už se to nezmění. Nijak to nevadí, stějně to je pro mé soukromé účely..

Nahlásit jako SPAM
IP: 89.103.4.–
20. 1. 2008   #9
-
0
-

Ok, tak uz jenom jedna poznamka k navrhu:

vytahovat si odnekud data timhle zpusobem

var string = document.getElementById('string').value;

neni uplne spravne, lepsi je je predavat jako parametr. Pak je takova funkce lepe prenosna.

 function mesto(mesto) { 

var http_request = false;
var request = "string="+mesto;

<select onchange="mesto(this.value)">

Nahlásit jako SPAM
IP: 81.30.238.–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 3 hosté

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý