Autor Zpráva
Rellik
Profil
Zdravím, právě řeším takovou věc: Na stránce mám dialogové okno, kde mám několik záložek, z nichž jedna je upload souboru. Dá se nějak zařídit aby po uploadu souboru a v podstatě po refreši stránky zůstalo toto okno otevřené?
$('#dialog').dialog({
 autoOpen: false, // tady by to chtělo nějak přepínat - při normálním přístupu false ale po refreši by bylo true
 width: 900,
 height: 500,
 buttons: {
  "Zavřít": function() {
                    $(this).dialog("close");
                    },
             }
  });

V podstatě pokud je okno otevřené a dám refreš, tak aby zase zůstalo otevřené. Pokud není, tak jako by se nic nedělo. Dá se to nějak vyřešit?
Díky za případné rady... :)
candiess
Profil
Rellik:
V podstatě pokud je okno otevřené a dám refreš, tak aby zase zůstalo otevřené.
No toto bych řešil takto: Po kliknutí/zavolání dialogu se do url připíše hash (např: #openDialog) a do inicializace dialogu přidal podmínku testování, jestli se v hashi něco nachází.
my_val = false;
if(hash) {
my_val = true;
}
$('#dialog').dialog({
 autoOpen: my_val, // tady by to chtělo nějak přepínat - při normálním přístupu false ale po refreši by bylo true
 width: 900,
 ......
Rellik
Profil
candiess:
Dík, ale bohužel to není tak jednoduché. Ono to reaguje kliknutí na prvek s nastaveným id, takže adresa se nemění ať tam přidám cokoliv.
Celý script na otvírání toho dialogového okna je:

// Prilohy
                        $('#prilohy').dialog({
                                autoOpen: false,
                                width: 550,
                                height: 600,
                                buttons: {
                                        "Zavřít": function() {
                                                $(this).dialog("close");
                                        },
                                }
                        });
                        
                        // Přílohy Link
                        $('#prilohy_lnk').click(function(){
                                $('#prilohy').dialog('open');
                                return false;
                        });
Samotné html je pak:

<a href="#" id="prilohy_lnk">Přílohy</a>
<div id="prilohy" title="Dostupné přílohy pro články">
Tento div se zobrazí po kliknutí. 
Ať do odkazu výše napíšu cokoliv, adresa se nemění... 
</div>
candiess
Profil
Rellik:
Teďka jsem si přečetl zadání znova a píšeš tam nco o záložkách, z níchž jedna je pro upload souboru. Mno když už to řešíš takto, tak roč i ten upload neprovedeš přes JQuery (ajax)?? Neproběhne ti žádný reload a tudíš nemusíš řešit otevírání dialogu :)

A nebo druhá možnost, pokud to chápu správně klikáš na odkaz, který ti otevře dialog. Když klikáš tak přece ůžeš ovlivnit URL ->

<a href="#" id="prilohy_lnk">Přílohy</a> <div id="prilohy" title="Dostupné přílohy pro články"> Tento div se zobrazí po kliknutí. Ať do odkazu výše napíšu cokoliv, adresa se nemění... </div>
A to sice, že href="#openDialog" a pak při reloadu zkontroluješ hash url a pak nastavíš. Pokud řešíš to, že je tam více těchto klikacích dialogů, můžeš do url přidávat hodnoty a to sice href="#openDialog=2" atd.. doufám, že jsem nějak užitečný :D
Rellik
Profil
Ne jde měnit url. i když tam napíšu cokoliv, tak adresa se nezmění. Dokonce i když smažu ten křížek, nic to neovlivní. Pro lepší pochopení můžeš kouknout přímo na stránku kde to chci vyřešit: http://example.mmrspress.eu/ v patičce je odkaz na administraci. Heslo i jméno: test
Dále pak Aktuality -> přidat aktualitu
Nahoře je odkaz "Přílohy" a to je to okno o kterém se bavíme... :) Na záložce přidat soubor - po odeslání aby zůstalo toto okno otevřené. Ono i kdyby se nějak podařilo do té....
Mmt, teď mě napadlo, že po přesměrování tam můžu připsat #openDialog Takže jednu čás bych teda měl. Ještě zprovoznit tu podmínku aby to po přesměrování znovu otevřelo to okno.. Zkoušel sem tam nakopírovat ten tvůj script, ale nefunguje to. Když sem to tam dal, tak to okno se otevřelo jako normální div pod formulář...
candiess
Profil
Rellik:
Zkoušel sem tam nakopírovat ten tvůj script
Který myslíš? Ten co jsem uvedl je jen ukázka, určitě nebude fungovat, protože proměnná hash je false.

hash = false;
if(window.location.hash) {
url = window.location.hash;
h_arr = url.split("#");
hash = h_arr[1];
}

if(hash) {
my_val = true;
} else {
my_val = false;
}
Tady je ten kod na testování hashe, tedka maš v my_val buď true a nebo false. Zkus to zakomponovat a napiš.


Testoval sem přes Live Edit ve Firebugu a mě to funguje :)
<script>

hash = false;
if(window.location.hash) {
url = window.location.hash;
h_arr = url.split("#");
hash = h_arr[1];
}

if(hash) {
my_val = true;
} else {
my_val = false;
}
                $(function(){

                        // Tabs
                        $('#tabs').tabs();

                        // Dialog
                        $('#dialog').dialog({
                                autoOpen: false,
                                width: 900,
                                height: 500,
                                buttons: {
                                        "Zavřít": function() {
                                                $(this).dialog("close");
                                        },
                                }
                        });
                        
                        // Dialog Link
                        $('#dialog_lnk').click(function(){
                                $('#dialog').dialog('open');
                                return false;
                        });

                        // Prilohy
                        $('#prilohy').dialog({
                                autoOpen: my_val,
                                width: 650,
                                height: 600,
                                buttons: {
                                        "Zavřít": function() {
                                                $(this).dialog("close");
                                        },
                                }
                        });
                        
                        // Přílohy Link
                        $('#prilohy_lnk').click(function(){
                                $('#prilohy').dialog('open');
                                return false;
                        });

                        //hover states on the static widgets
                        $('#dialog_link, ul#icons li').hover(
                                function() { $(this).addClass('ui-state-hover'); },
                                function() { $(this).removeClass('ui-state-hover'); }
                        );

                });
        </script>
Rellik
Profil
Paráda díky moc. Funguje. Já s JS moc kamarád nejsem a tak bych to asi sám nezvládl.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: