2013-05-19 80 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。它怎麼能被執行它瀏覽器只是不知道它的存在? 我想我的回答對你來說太遲了,但我希望它能幫助其他人。