2013-05-19 5 views
0

Я хочу всплывать jQuery Ui Dialog, но он не работает. Вместо диалога я открываю новую страницу. Мой код следующий:ZF2 - показать jQuery Ui Dialog

действие контроллера:

public function diaAction() 
{ 
    $viewModel = new ViewModel(); 
    $viewModel->setTerminal(true);   
    return new ViewModel(); 
} 

index.phtml:

<a class="some-link" title="title here" href="<?= $this->url('dialog', array('action' => 'dia'))?>">open form</a> 

dia.phtml (диалог код)

<script type="text/javascript"> 
$(document).ready(function() { 
    $('.some-link').each(function() { 
     var $link = $(this); 
     var $dialog = $('<div></div>') 
      .load($link.attr('href')) 
      .dialog({ 
       autoOpen: false, 
       title: $link.attr('title'), 
      }); 
    }); 
}); 
</script> 

Я просто не понимаю это, почему это не так просто, как должно быть. Любая помощь?

ответ

1

Вам нужно обработать «щелчок», чтобы он отображал диалог, а не ссылку. Что-то вроде этого:

$('.table a.button').on('click',function(e){ 
    e.preventDefault(); 
    $('<div></div>') 
     .load($link.attr('href')) 
     .dialog({ 
     autoOpen: false, 
     title: $link.attr('title'), 
    }); 
}); 
+0

Я пробовал так, но это не работает. Он по-прежнему открывает новую страницу. – Orochi

+0

Тогда в вашем JavaScript должна быть ошибка. 'e.preventDefault()', это первое, что происходит, когда вы нажимаете ссылку, и она выполняет именно то, что она заявляет, она предотвращает действие по умолчанию. Если это не так, JS вообще не выполняется, поэтому где-то раньше должна быть ошибка JS, ищите его :) – Sam

+0

У меня есть простая кнопка формы zf2 (не кнопка отправки!) С классом «createContact» и успешно использовать пример, предоставленный @Sam: $ ('. createContact'). on ('click', function (e) {... .load (' url (' contact ', array ('action' => 'add'));?> ') ...} - Но по какой-то причине мне пришлось удалить параметр autoOpen: false. В противном случае диалог не откроется после того, как ссылка будет загружена через AJAX. – webDEVILopers

0

На мой взгляд, javascript просто не на своем месте. Он вызывается index.phtml, а не dia.phtml. Как это можно сделать, браузер просто не знает его существования? Я думаю, что мой ответ приходит слишком поздно для вас, но я надеюсь, что это поможет некоторым другим людям.