2013-05-19 36 views
0

我想弹出一个jQuery Ui对话框,但它不起作用。我没有打开对话框,而是打开了一个新页面。我的代码是未来:ZF2 - 显示jQuery Ui对话框

控制器的动作:

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('<?php echo $ this-> url('contact', array('action'=>'add'));?>')...} - 但由于某种原因我不得不删除autoOpen:false选项,否则在通过AJAX加载链接后没有对话框会打开。 – webDEVILopers

0

在我看来,JavaScript已经不只是在其正确的地方。它被index.phtml调用,而不是dia.phtml。它怎么能被执行它浏览器只是不知道它的存在? 我想我的回答对你来说太迟了,但我希望它能帮助其他人。