2011-02-22 96 views
0

我的lightview模式在Ajax请求后保持关闭状态。这意味着当我发出一个Ajax请求并且之后,我会为弹出窗口调用一个lighview,弹出窗口会在加载弹出页面后马上关闭。如果我没有发出Ajax请求,弹出窗口就会正常工作,除非用户完成,否则不会关闭。JavaScript - Lightview Modal保持关闭

任何人都可以帮我解决我做错了什么吗?以下是模拟我的问题的代码。

<script language="JavaScript" type="text/javascript"> 
Event.observe(
    window, 
    'load', 
    function (event) { 
     $('ajaxBtn').observe(
      'click', 
      function(event) { 
       ajaxCall('ajax.png'); 
      }); 
    }); 

function ajaxCall(img_url) 
{ 
    Lightview.show({ href: img_url, rel: 'image', options: { width: 100, height: 100, autosize: false, keyboard: true, overlayClose: false, menubar: false } }); 

    document.observe("lightview:opened", function(event) 
    { 
     new Ajax.Request(
      'ajax_post.html', 
      { 
       method: 'POST', 
       parameters: $('frmName').serialize(true), 
       onComplete: ajaxSuccess, 
       onFailure: ajaxFailed 
      }); 
    }); 
} 

function ajaxSuccess() 
{ 
    Lightview.hide(); 
    alert("Ajax call success"); 
} 

function ajaxFailed() 
{ 
    Lightview.hide(); 
    alert("Ajax call failed"); 
} 
</script> 

<form accept-charset="utf-8" name="frmName" id="frmName" method="post"> 
    Name: <input type="text" name="full_name" id="full_name" value="" /> 
    <input type="hidden" name="id" id="id" value="1" /><br /> 

    <img id="ajaxBtn" src="ajaxBtn.jpg" style="cursor: pointer;" title="Ajax Call" alt="Ajax Call" border="0" /> 

    <a href="pop-up.html" class="lightview" title="pop-up :: :: topclose: true, width: 600, height: 180">pop-up window</a> 
</form> 

在此先感谢。

回答

1

ajaxSuccess()ajaxFailed()函数调用Lightview.hide(),我认为这是原因。
您是否尝试删除Lightview.hide()

+0

是的,我有,但是,然后不关闭Lightview.show()打开的模式弹出。基本上,我希望模态先被完全加载,然后是人ajax调用,然后关闭打开的模态。 – 2011-02-22 21:57:11

+0

@MercuryTerminal:啊,这是否发生在第一次通话(ajaxBtn点击)?还是以下点击?你可以尝试删除“document.observe(”lightview:打开“,功能(事件){”和“});”但是ajax调用(新的Ajax.Request)仍然存在,只需删除document.observe部分即可。 – srcastro 2011-02-23 02:07:00