繁体   English   中英

简单的jQuery事件处理程序

[英]simple jquery event handler

目前在jquery上存在一些实际问题。 到目前为止,基本上我是。 表单提交后,表单就会被提交,并弹出带有相关信息的灰色框。

我需要做的是刷新整个页面,然后显示灰色框。

我有以下代码

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

提交表单后,被注释掉的行再次加载页面,其他代码使灰色框弹出。

是他们曾经说过的一种方式:

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

已经被引诱这样做:

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

希望这是有道理的。

这是不可能的。

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

相反,您应该以写$("#example1").gbxShow();的形式放置服务器端代码$("#example1").gbxShow(); 如果已提交表单,则在单独的<script>块中。

为什么不正常地提交表单(即不使用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>

这样的事吧?

您遇到的问题是该网页是“无状态的”。 这意味着您将无法使用JavaScript,刷新页面并继续使用JavaScript。 刷新页面时,您将丢失当前状态,并且页面将从头开始。

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

一种解决方案可能是使用jQuery AJAX表单插件,该插件会将表单提交到服务器并返回提交结果,这将避免破坏页面生命周期。 然后,您可以根据需要显示该框。

执行此操作的标准方法是让服务器在对表单发布的响应中返回灰框内容。

您可以在jquery中通过将页面和灰色框放入单独的iFrame中来做到这一点,以便从页面刷新中安全

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM