2010-03-09 132 views
0

现在有一些jQuery的实际问题。基本上我到目前为止是。提交表格后,表单将被提交一个灰色框弹出的相关信息。简单的jQuery事件处理程序

我需要做的是刷新整个页面,然后让灰色框出现。

我有以下代码

$("#ex1Act").submit(function() { 
     //$('#example1').load('index.php', function()         
     $("#example1").gbxShow(); 
     return true; 
     }); 

这是在表单提交的其他代码使灰框弹出后,再次注释掉加载的页面就行了。

是他们说,一旦一个办法:

$('#example1').load('index.php', function() 

已经exucted做到这一点:

$("#example1").gbxShow(); 

希望这是有道理的。

+1

但是,如果您的表单提交并且整个页面重新加载,那么之前的代码将会消失... – Pointy 2010-03-09 14:13:46

回答

2

这是不可能的。

表单提交后,运行在提交表单的页面上的Javascript完全消失;它不会影响表单返回的页面。

相反,你应该把服务器端代码中,如果表单被提交在一个单独的<script>块写$("#example1").gbxShow();形式。

+0

重新阅读您已死亡的问题时,该加载选项根本没有帮助,woops。 – 2010-03-09 14:17:28

1

您遇到的问题是网页是“无状态的”。这意味着你不能做一些JavaScript,刷新页面并继续使用JavaScript。刷新页面时,会丢失当前状态,并且页面从头开始。

您需要重新设计设计以记住页面生命周期(即所有JavaScript在导航中永久停止)。

一个解决方案可能是使用jQuery AJAX表单插件,它将把表单提交给服务器,并让您返回提交结果,避免打破页面生命周期。您可以随意显示该框。

0

执行此操作的标准方法是让服务器返回表单帖子的响应中的灰色框内容。

你也许可以做到这一点jQuery中通过将网页和灰箱成独立的iFrame因此,这将是从网页安全刷新

2

为什么不提交表单正常(即不使用JavaScript)并在结果页面添加一个变量,指示需要显示灰色框?像这样:

<?php if(isset($_POST['submit'])): ?> 
    <script type="text/javascript"> 
     var showGreyBox = true; 
    </script> 
<?php endif; ?> 

...

<script type="text/javascript"> 
    $(function(){ 
     if(showGreyBox !== undefined){ 
      // execute code to show the grey box 
     } 
    }); 
</script> 

类似的东西,也许?