Autor Zpráva
jQuery
Profil *
Zdravím, mám toto HTML:
<a href="smazat.php?id=a" title="Opravdu smazat a?" class="jquerydotaz">smazat A</a>
<a href="smazat.php?id=b" title="Opravdu smazat b?" class="jquerydotaz">smazat B</a>
<a href="smazat.php?id=c" title="Opravdu smazat c?" class="jquerydotaz">smazat C</a>
atd.
Chtěl bych pomocí jQuery vytvořit dialog s dotazem, zda si uživatel přeje konkrétní záznam smazat, po kliknutí na odkaz smazat A, smazat B atd.
Ovšem chtěl bych to pomocí dialogu ve kterém bude text převzat z atributu a href -> title, dialog aby měl tlačítka OK, STORNO.
Pokud se klikne na OK aby se provedlo přesměrování na hodnotu atribudu a href, jinak se pouze dialog zavře a nic se neprovede.
Pomůže mi někdo prosím?
Chamurappi
Profil
Reaguji na jQueryho:
Proč by ten text měl být zrovna v atributu title? Vyjadřuje potvrzující otázku, ne popis cíle odkazu.
Na tvém místě bych použil normální onclick="return !confirm('Opravdu smazat …')". Nevidím důvod k dodatečnému přiřazování onclicků a lovení textu z atributu, do kterého nepatří…
jQuery
Profil *
Důvodem pro použití jQuery je sjednocení vzhledu, dialogy prohlížeče nelze vzhledově modifikovat. Tak jak píšeš by bylo vše jednodušší, ale všechny ostatní dialogy jsou přes jQuery.
Chamurappi
Profil
Reaguji na jQueryho:
Tak si tam místo confirm napiš jméno vlastní funkce, která ti otevře dialogové okno podobné těm ostatním.

dialogy prohlížeče nelze vzhledově modifikovat
Což je plus pro uživatele, aspoň se v nich vyzná.
jQuery
Profil *
Kdyby to stejně někdo hledal tak se to dá i takto (snad jsem to udělal dobře):
<a href="smazat.php?id=a" title="Smazat položku A" class="jquerydotaz">smazat A</a>
<a href="smazat.php?id=b" title="Smazat položku B" class="jquerydotaz">smazat B</a>
<a href="smazat.php?id=c" title="Smazat položku C" class="jquerydotaz">smazat C</a>

<script type="text/javascript">
        $(document).ready(function(){
            $(".jquerydotaz").click(function(e) {
                e.preventDefault();
                thisHref = $(this).attr("href");
                thisTitle = $(this).attr("title").toLowerCase();
                var $dialog = $("<div></div>").dialog();
                $dialog.html("Skutečně si přejete "+thisTitle+" ?");
                $dialog.dialog({
                    bgiframe: true,
                    autoOpen: false,
                    title: "Dotaz",
                    modal: true,
                    width: 350,
                    buttons: {
                    'Ano': function() {
                        $( this ).dialog("close");
                        document.location = thisHref;
                    },
                    'Ne': function() {
                        $( this ).dialog("close");
                    }}    
                })
                $dialog.dialog("open");
                });
                });
    </script>
Chamurappi
Profil
Reaguji na jQueryho:
Kde máš var?
Kdyby to někdo hledal, tak funkce dialog není z jQuery, ale z jQuery UI, což je baculatá líná příšera, kterou se nevyplatí načítat kvůli něčemu tak triviálnímu, jako je emulované dialogové okno.
jQuery
Profil *
Tak tedy upravená verze:
HTML:
<a href="smazat.php?id=a" title="Smazat položku A" class="jquerydotaz">smazat A</a>
<a href="smazat.php?id=b" title="Smazat položku B" class="jquerydotaz">smazat B</a>
<a href="smazat.php?id=c" title="Smazat položku C" class="jquerydotaz">smazat C</a>
jQuery UI
<script type="text/javascript">
        $(document).ready(function(){
            $(".jquerydotaz").click(function(e) {
                e.preventDefault();
                var thisHref = $(this).attr("href");
                var thisTitle = $(this).attr("title");
                var prvniZnak = thisTitle.substring( 0, 1 );
                var prvniZnak = prvniZnak.toLowerCase();
                var mujText = thisTitle.substring( 1 );
                var novyText = prvniZnak + mujText;
                var $dialog = $("<div></div>").dialog({
                    modal: true,
                    bgiframe: true,
                    title: "Dotaz",
                    width: 350,
                    buttons: {
                    'Ano': function() {
                        $( this ).dialog("close");
                        document.location = thisHref;
                    },
                    'Ne': function() {
                        $( this ).dialog("close");
                    }}    
                });
                $dialog.html("Skutečně si přejete "+novyText+" ?");
                $dialog.dialog("open");
                });
                });
    </script>
Knihovnu jQuery UI nějaký čas používám ke své spokojenosti, samozřejmě, že jen kvůli dialogům ji nemám ... to bych se s tím tak nedělal.

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:

0