Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在window.onbeforeunload中完成按钮单击之前,光标不会停止?_Javascript_Jquery_Asp.net - Fatal编程技术网

Javascript 在window.onbeforeunload中完成按钮单击之前,光标不会停止?

Javascript 在window.onbeforeunload中完成按钮单击之前,光标不会停止?,javascript,jquery,asp.net,Javascript,Jquery,Asp.net,下面是window.onbeforeunload的javascript代码。当按下浏览器后退按钮时,我正在调用按钮背后的代码单击方法 现在的问题是直到$(“#buttonclientid”)光标才停止。单击()完成。只需调用该方法并转到下一个语句。如何按住或停止光标直到$(“#buttonclientid”)。单击()完成,然后移动到下一步 var form_has_been_modified = 0; $(function () { $("input").keyup(func

下面是window.onbeforeunload的javascript代码。当按下浏览器后退按钮时,我正在调用按钮背后的代码单击方法

现在的问题是直到
$(“#buttonclientid”)光标才停止。单击()
完成。只需调用该方法并转到下一个语句。如何按住或停止光标直到
$(“#buttonclientid”)。单击()
完成,然后移动到下一步

var form_has_been_modified = 0;
  $(function () {

      $("input").keyup(function () {
          form_has_been_modified = 1;
      })
      window.onbeforeunload = function (e) {
          if (!form_has_been_modified) {
                  return;
          }
                doYouWantTo();
      }

   });

   function doYouWantTo(){
        doIt=confirm('Do you want to save the data before leave the page?');
        if (doIt) {
             var returnbutton;
             //cursor should stop here until click function completes.
             returnbutton = $("#buttonclientid").click();
        }
        else{

            }
        }

我相信您的问题在于,您的
doYouWantTo
函数在卸载之前不会返回要传递回
onbeforeuload
的值,因此它会在运行函数的同时离开页面,而不是等待函数完成

您在这里的最佳行动如下:

return doYouWantTo()
....
if(doIt) {
    $('#buttonclientid').click(function() { // unsure if you can attach callback to click but idea is same
        return true;
    });
} else {
    return true;
}

将事件处理程序绑定到
onbeforeunload
事件时,它应返回以下两项之一:

  • 如果希望显示确认,则处理程序应返回字符串
  • 如果不希望显示确认(跳过处理程序),则返回
    未定义的
    (或根本不返回,效果相同)
也就是说,您的代码应该如下所示:

var form_has_been_modified = false;
$("input").keyup(function () {
    form_has_been_modified = true; // use a boolean :P
});

window.onbeforeunload = function (e) {
    if (form_has_been_modified) {
        return 'Do you want to save the data before leave the page?';
    } else {
        return undefined; // this can be omitted if you prefer
    }
};

告诉用户在系统对话框上单击了什么的唯一方法是使用
setTimeout
。有关该主题的详细信息,请参阅。

光标“不停止”是什么意思?什么光标?它要去哪里?为什么它在移动?我的意思是,在点击浏览器上的“后退”按钮后,它正在执行下一步,但没有完成$(“#buttonclientid”)。单击();函数并返回第页。您的意思是“附加回调”。你能详细说明一下吗?我指的是一个回调,表明你的“保存”功能已经完成。我不相信您可以在单击事件上使用回调,因此可以将您的
单击
代码取出,并将其放置在单独的函数
saveData(callback)
if(doIt)
branch replace
$('.#buttonclientid')中。单击(
with
saveData(