0

我的 jQuery 脚本看起来像(表单正在提交要上传的文件):

      $("#addMore").click(function() {
                $("#progForm").submit();
                $("#upTar").css("display","block");
                $("#title").val("");$("#obj").val("");$("#theory").val("");     $("#code").val("");$("#output").val("");$("#conc").val("");
            });

我想延迟执行从 $("#upTar") 开始的代码,直到表单提交完成(即文件已上传并且 PHP 脚本已响应)。

编辑

#upTar 是一个 iframe 和表单提交的目标。我希望仅在从表单操作脚本生成其内容后才显示#upTar。

谢谢!

解决后的代码

 $("#addMore").click(function() {
    $("#progForm").submit();
    $('#upTar').load(function() {
        $("#upTar").css("display","block");
        $("#title, #obj, #theory, #code, #output,     #conc").val("");
       });
 });
4

3 回答 3

2

没有办法让浏览器中的 JavaScript “等待”任何东西。在这种情况下,您可以做几件事:

  1. 您可以将 CSS 更改等放在目标的“加载”事件处理程序中<iframe>

    $('#upTar').load(function() {
            $("#upTar").css("display","block");
            $("#title, #obj, #theory, #code, #output, #conc").val("");
    }
    
  2. 您可以将代码放入从自身执行的表单 POST 的响应中<iframe>

    $(function() {
      (function($) {
            $("#upTar").css("display","block");
            $("#title, #obj, #theory, #code, #output, #conc").val("");
      })(window.parent.$);
    });
    
于 2011-03-28T14:26:50.937 回答
0

您现在正在做的是提交 HTML 表单并加载您在表单的“操作”属性中列出的任何页面。javascript 函数的下半部分永远不会真正执行,因为浏览器将被定向到新页面。这就是你想要的,一个通过 ajax 提交然后清除表单的表单:

$("#addMore").click(function() {
    var formData = $("#progForm").serialize();
    var url = $("#progForm").attr("action");
    $.get(url, formData, function(){
        $("#upTar").css("display","block");
        $("#title").val("");
        $("#obj").val("");
        $("#theory").val("");
        $("#code").val("");
        $("#output").val("");
        $("#conc").val("");
    });
});

你在寻找类似的东西吗?

于 2011-03-28T14:29:07.643 回答
0

如果您在 iframe 中加载 jQuery,您可以使用以下函数通过此选择器控制父元素:

$("#myparentid", top.document); 

本质上,您可以在 iFrame 中运行一个等待刷新的函数,此时您可以使用 top.document 选择器运行您希望的任何函数。

于 2011-04-26T18:28:05.223 回答