2013-04-27 114 views
1

我有一个视图showform.phtml,通过jquery dialog加载到div。在视图中,我正在使用$(form).submit()侦听器加载JavaScript。问题是,JavaScript从不加载。我尝试了几种不同的方法,包括$this->headScript()->appendScript(script),$this->headScript()->appendScript(file)。我甚至尝试在布局和索引视图中包含脚本,以确保它可用...但弹出窗口永远不会触发它。Zend Framework 2 - jquery模式弹出问题

我怀疑这与我在表单视图中使用setTerminal(true)这个事实有关......但我不知道替代方法是什么。

任何人有任何疑难解答建议?或者有关这个问题的任何经验?

感谢

编辑: 这是样品javasctipt,在index.phtml视图

$(function() 
{  
    $("form#News").submit(function() 
    { 
     $.ajax(
     { 
      type: 'POST', 
      url: '/main/manage/validateajax', 
      data: $('form#News').serialize(), 
      success: 'success' 
     }); 

     return false; 
    }); 
}); 

视图的体载荷是showform.phtml加载到 showform一个div创建一个形式叫#News。

当我将js代码插入到showform体中时,它可以工作。当我将它附加到headScript时,它不起作用。

+0

它的逻辑:** setTerminal(真)**是穿上” t加载布局,并且您的headScript助手在布局中。试着在视图中打印你的JS,或者将它包含到主js中(当你调用模态时它已经加载) – 2013-04-27 19:18:06

+0

我试过了,我甚至把它加载到了布局中,但它似乎对视图是不可见的。 (或者这个视图对js来说看起来是不可见的)。我没有尝试只是加载到视图的身体...我会给这一个镜头。谢谢。 – aserwin 2013-04-27 19:20:25

+0

所以,如果我将脚本插入到视图的主体中,它就可以工作。首先,这不是很好的形式,但主要是我不应该这样做!我确定有些应用程序使用js和模式弹出窗口。是什么赋予了?有没有解决方法? – aserwin 2013-04-27 20:14:19

回答

0

也许这是一个解决方案。

要求:你的模式视图的脚本都被已经加载(例如内部的application.js

$("#loadModalBtn").click(function(e){ 
    e.preventDefault(); 

    var url = $(this).attr("href"); 

    $("#modalContainer").load(url, function(){ // that's the point 

     var urlForm = $("form#News").attr("action"); 

     $("form#News").submit(function(){ 
      $.ajax({ 
       type: 'POST', 
       url: urlForm, 
       data: $('form#News').serialize(), 
       success: 'success' 
      }); 
      return false; 
     }); 
    }).dialog({ 
     height: 140, 
     modal: true 
    }); 
});