Nefungují skripty po ajax překreslení

john.jaros.me
Člen | 5
+
0
-

Ahoj,

posnažím se to shrnout co nejrychleji. Kliknu na odkaz, po kterém mi vyskočí modal. V modalu mám input s datepickerem od bootstrapu. Když přepnu na jiné datum, provede se ajax, snippet se překreslí. Ale pokud chci znovu přepnout na jiné datum, datepicker se ani nezobrazí. Budu rád za každou radu! Díky :-) Nette používám nejnovější verzi.

Layout.latte

{snippet diary}
               {form diaryForm, class => 'form-materialize form-materialize-third ajax'}
               <fieldset>
                   <div class="form-materialize-holder">
                       <div class="input-holder holder-materialize">
                           {label date, class => 'label-materialize-second' /}
                           <input n:name="date" value="{ifset $date}{$date}{/ifset}" class="input-materialize-second dtpicker" />
                       </div>
                       {if !$diaryBlocked}
                           <div class="input-holder holder-materialize">
                               {label question_1, class => 'label-materialize-second' /}
                               {input question_1, class => 'input-materialize-second select'}
                           </div>
                           <div class="input-holder holder-materialize">
                               {label question_2, class => 'label-materialize-second' /}
                               {input question_2, class => 'input-materialize-second textarea'}
                           </div>
                           <div class="input-holder holder-materialize">
                               {label question_3, class => 'label-materialize-second' /}
                               {input question_3, class => 'input-materialize-second select'}
                           </div>
                           <div class="input-holder holder-materialize">
                               {label question_4, class => 'label-materialize-second' /}
                               {input question_4, class => 'input-materialize-second textarea'}
                           </div>
                       </div>

                       <button type="submit" n:name="send" class="button button-block button-default button-uppercase">
                           <span>Vyplnit</span>
                       </button>
                       {else}
                           <p>Děkujeme. Přijďte zase zítra.</p>
                       {/if}
                   </fieldset>
               {/form}
           {/snippet}

Patička:

{block scripts}
	<script src="{$basePath}/js/main.min.js"></script>
{/block}

Ajax v main.min.js:

initAjaxRefresh: function() {
        $.nette.ajax({
            type: 'GET',
            url: '?do=refreshDate',
            data: {
                'date': $('.dtpicker').val()
            },
            error: function() {
                console.warn("An error with AJAX.");
            }
        });
    }

BasePresenter:

public function handleRefreshDate($date) {
        if ($this->isAjax()) {
            $userId = json_decode($this->httpRequest->getCookie('user'))->id;
            $isExist = $this->diary->isCreate($userId, date('Y-m-d', strtotime($date)));

            if ($isExist) {
                $this->template->diaryBlocked = true;
            } else {
                $this->template->diaryBlocked = false;
            }

            $this->template->date = $date;
            $this->redrawControl();
        }
    }
blueticket
Člen | 41
+
0
-

pridaj si atribut id=„dpDate“ pre input s datumom a niekde do snippet diary si este pridaj skript:

<script type="text/javascript">
	$('#dpDate').datepicker();
</script>

Ked sa Ti totiz prekresli iba snippet, vsetky javascripty mimo neho ostanu nenacitane.

blueticket
Člen | 41
+
0
-

Oprava nemusis pouzit id-cko az teraz som si vsimol. Cize staci do snippetu v sablone len pridat skript:

<script type="text/javascript">
    $('.dtpicker').datepicker();
</script>