情况如下,我有一个带有按钮的asp页面,该按钮向服务器发送保存请求(onClick),但在此之前必须检查一些事情,如果需要,必须要求更多信息用户通过弹出窗口。这是通过为OnCLientClick运行js函数来完成的,如果这些验证通过,那么我们继续保存。
JS看起来如下,我们首先检查是否需要额外的信息,如果是这种情况我们通过弹出窗口打开一个新页面,这个弹出窗口然后调用opener来设置一个布尔值。根据这个布尔值,我们希望OnClick的保存是否继续。
父js的代码如下:
var FilledIn = false;
function f1(url){
if(validate){
var popupObject = window.open(url);
popupObject.focus();
return setTimeout(function(){
if (popupObject.closed){
return FilledIn; //Global set by the child
}
}, 500);
}
else {
return true;
}
}
问题是即使在弹出窗口关闭之前就已经返回了fillIn值,导致已经发生了保存(如果为true),这应该等到弹出窗口关闭(无关紧要)。我使用超时来防止这种情况,但这不会产生预期的结果。我怎样才能达到预期的效果?