我的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("");
});
});
答案 0 :(得分:2)
没有办法让浏览器中的JavaScript“等待”任何事情。在这种情况下,您可以做几件事:
您可以将CSS更改等放在目标<iframe>
的“加载”事件处理程序中
$('#upTar').load(function() {
$("#upTar").css("display","block");
$("#title, #obj, #theory, #code, #output, #conc").val("");
}
您可以将代码放在对<iframe>
本身执行的表单POST的响应中。
$(function() {
(function($) {
$("#upTar").css("display","block");
$("#title, #obj, #theory, #code, #output, #conc").val("");
})(window.parent.$);
});
答案 1 :(得分:0)
您现在正在做的是提交HTML表单并加载您在表单的“action”属性中列出的任何页面。 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("");
});
});
你在寻找类似的东西吗?
答案 2 :(得分:0)
如果在iframe中加载jQuery,可以使用以下函数来控制使用此选择器的父元素:
$("#myparentid", top.document);
本质上,您可以在iFrame中运行一个等待刷新的函数,此时您可以使用top.document选择器运行任何您想要的函数。