Bootstrap modal a ajax zpracování

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
TomasHuttner
Člen | 66
+
0
-

Ahoj, mám modal okno ve kterým chci upravovat položky v menu, vše mám funkční i za ajaxované. Ale po přidání položky do databáze se mi modalové okno zavře a já si nevím rady jak docílit aby zůstalo otevřené. Nevíte někdo jak na to? Budu rád za každou pomoc.

Sablona:

{snippet menu}
        <div id="menuModal" class="modal fade bs-example-modal-lg" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" aria-hidden="true">
            <div class="modal-dialog modal-lg">
              <div class="modal-content">
                <div class="modal-header">
                  <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
                  <h4 class="modal-title" id="myModalLabel">Editace položek v menu</h4>
                </div>
                <div class="modal-body">
                    <div n:foreach="$flashes as $flash" class="alert alert-{$flash->type}">
                        <span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span>
                        {$flash->message}
                    </div>
                    <form n:name="addItemMenu" class="ajax">
                        <div class="row">
                            <div class="col-md-5">
                                <input n:name="itemMenu" placeholder="Název položky" class="form-control">
                            </div>
                            <input n:name="send" class="btn btn-primary">
                        </div>
                    </form>
                </div>
                <div class="modal-footer">
                  <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                </div>
              </div>
            </div>
        </div>
      {/snippet}

zpracování formuláře v presenteru:

public function processAddItemMenu(Form $form) {
         try {
             $values = $form->getValues();
             $itemMenu = $values->itemMenu;
             $this->menuModel->addItemMenu($itemMenu);
             $this->flashMessage('Položka byla přídána!', 'success');
             if ($this->isAjax()) {
                 $this->invalidateControl('menu');
             }
         } catch (Exception $e) {
             $e->flashMessage('Přidání položky se nezdařilo zkuste to pozdeji!');
         }
    }

edit..
Jestě sem zapoměl na javascript:

$("form.ajax").live("click", function(event) {
        event.preventDefault();
        $.get(this.href);
    });

Editoval TomasHuttner (30. 12. 2014 0:10)

trejjam
Backer | 65
+
0
-

Posuň snippet hlouběji do DOM (mohlo by vyhovovat pod class=„modal-body“). Snippet při ajaxu přepíše svůj obsah. Tedy „vyresetuje“ všechny akce, které na nich provedl .js

TomasHuttner
Člen | 66
+
+1
-

@trejjam díky problém vyřešen!