JQuery změna vyběru select boxu po načtení obsahu ajaxem – JavaScript, AJAX, jQuery – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

JQuery změna vyběru select boxu po načtení obsahu ajaxem – JavaScript, AJAX, jQuery – Fórum – Programujte.comJQuery změna vyběru select boxu po načtení obsahu ajaxem – JavaScript, AJAX, jQuery – Fórum – Programujte.com

 

Joshua
~ Anonymní uživatel
6 příspěvků
2. 8. 2011   #1
-
0
-

Ahoj,

Nejdřív teoreticky co vůbec dělám, asi možno přskočit:

snažím se udělat trošku inteligentní formulář pomocí ajaxu a jQuery. Ve formuláři mám několik select boxů které představují kategorie, které jdou pěkně zasebou (hlavni_kategorie,typ_produktu, vyrobce, model, parametr_produktu). Při změně obsahu select boxu se do následujícího načtou nová data pomocí ajaxu.

To funguje podle představ. Nicméně pokud si uživatel prokliká do poslední kategorie a chtěl by se podívát na jiný typ_produktu (což je druhá kategorie) tak doposud jsem všechny následující smazal a nutím uživatele klikat odznova. Takže se snažím aby klikat nemusel. Ajaxem načtu znova data s novou podmínkou a budu hledat jestli je tam předchozí hodnota

Pokud jste přeskakovali tak takdy problém prakticky:

<select class=\"kategorie_select\"></select>
<select class=\"produkt_select\"></select>
<select class=\"vyrobce_select\"></select>
<select class=\"model_selec\"></select>
<select class=\"obsah_select\"></select>

#rekneme ze jsem zmenil select pro produkt
#následující kód je funkce které je zavolána pomoci change
#uložim si předchozí výběr
kateogrie = $(".kategorie_select").children("option:selected").attr("value");
produkt = $(".produkt_select").children("option:selected").attr("value");
vyrobce = $(".vyrobce_select").children("option:selected").attr("value");
model = $(".model_select").children("option:selected").attr("value");
parametr = $(".obsah_select").children("option:selected").attr("value");

#nactu nová data a vlozím je do selectu pro vyrobce
hledat_produkt(".produkt_select", ".vyrobce_select");
#předchoží funkce mi zrestartovala výběr select boxu vyrobce takze tam chci načíst předchozí hodnotu
$(".vyrobce_select option[value='"+vyrobce+"']").attr("selected", true);
#a tadyto je problém, protože se mi ten option nevybere, hledaný option tam následně mohu dohledat ale jquery ho prostě ignoruje ignoruje,..

budu rád za každou radu, zkoušel jsem už různý opičárny jako

$(function() {
    hledat_produkt(".produkt_select", ".vyrobce_select");
}).ready( function() {
    $(function() {
        $(".vyrobce_select option[value='"+vyrobce+"']").attr("selected", true);
    });
});

ale zatím bez úspěchu,..
 

Nahlásit jako SPAM
IP: 88.100.158.–
Kobi
~ Moderátor
+1
Věrný člen
2. 8. 2011   #2
-
0
-

Nikde jsem nenašel větu typu "Nefunguje mi..." nebo "Tady tohle nejede...". Možná neumím číst mezi řádky :) Každopádně pokud chceš na data zavolaná ajaxem používat jQuery, musíš na to jít přes live, které se vztahuje i na elementy na stránce, které nejsou v době vygenerování dokumentu přítomny.

http://api.jquery.com/live/

Nahlásit jako SPAM
IP: 88.101.155.–
Joshua
~ Anonymní uživatel
6 příspěvků
3. 8. 2011   #3
-
0
-

Asi jsem to tam moc schoval.

Problém je, že po načtení nových dat se "nevyselectuje" požadovaná hodnota = select zustane tak jak ho ajax načetl místo toho aby se se zobrazila původní hodnota,....

Za odkaz děkuji večer to prostuduji

Nahlásit jako SPAM
IP: 88.100.158.–
1321645679876456
~ Anonymní uživatel
27 příspěvků
3. 8. 2011   #4
-
0
-

   

class=\"kategorie_select\"

Proč tam proboha cpeš ty lomítka?

$(".kategorie_select").children("option:selected")

Zbytečné volání funkce navíc, dá se to zapsat do selektoru:

$('.kategorie_select :selected')
$(".vyrobce_select option[value='"+vyrobce+"']")

Zkus proměnnou vyrobce ošetřit pomocí funkce $.trim() a pro výběr použít pseudotřídu :contains

$('.vyrobce_select option:contains(' + $.trim(vyrobce) + ')')
Nahlásit jako SPAM
IP: 83.240.95.–
Joshua
~ Anonymní uživatel
6 příspěvků
4. 8. 2011   #5
-
0
-

TO 132..... díky za reakci, to jsou "eskejpovací" znaky z php. Bohužel trim to nevyřešil a contains bych podle mně použít nemohl například vyrobce dva výrobci xxx a xxx-comercial při výběru xxx by se mi mohlo stát, že se mi vybere xxx-comercial což nechci,...

TO Kobi: s tím live() jsem to nějak nepochopil, vůbec nevím jaký bych měl použít ten event pro ajax,... niceméně jsem si našel svojí cestičku,...

Pro zajímavost, moje řešení spočívá v úpravě funkce která volá ajax a vkládá data na místo, protože jsem během dneška přidal další funkčnosti udělám je malý opis řešeného problému,..

Tedy přidal jsem do funkce parametr který je bud prázný nebo nese předchoží vybraný prvek. Pokud nese předchozí vybraný prvek tak po ready() (tedy dokončení práce s DOM) se označí požadovaná hodnota jako vybraná

function hledat_produkt(par_1, par_2, par_3, predchozi_vyrobce) {
$.post(adresa.html, {parametr_1: neco}, function(result) {
	$(par_2).empty();
	if(predchozi_vyrobce == "") {
		$(par_2).append(result);
	} else {
		$(par_2).append(result).ready(function() {
			$(par_2"+ option[value='"+predchozi_vyrobce+"']").attr("selected", true);
		});
	}
});
}

zatím to vypadá, že to funguje uvidíme po delsím testování. Ještě jednou děkuji za Váš čas :-)

Nahlásit jako SPAM
IP: 88.100.158.–
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, 20 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ý