запретить обновление страницы после всплывающего окна

#javascript #asp.net

#javascript #asp.net

Вопрос:

Как я могу предотвратить обновление страницы, когда пользователь нажимает на OK кнопку javascript alert окна.

  <asp:Button ID="btnComplete" runat="server" Text="Complete" OnClientClick ="verify_complete()" />


 function verify_complete() {
        if (!chkCmnts()) {
            alert("Categories/comments are required. ");
            return false;
                         }
                             }
  

Спасибо

BB

Ответ №1:

Вы уже возвращаете false из JS, поэтому вам нужно изменить разметку на:

 <asp:Button ID="btnComplete" runat="server" Text="Complete" OnClientClick ="return verify_complete()" />
  

Если verify_complete() функция вернет true , она отправит сообщение обратно, если нет, этого не произойдет.

Ответ №2:

Вы не можете предотвратить это, но вы можете уведомить пользователя через всплывающее окно, что он не должен перезагружаться. Это делается с помощью события окна onbeforeunload, которое лучше всего документировано в MDN.

добавьте это в свое всплывающее окно в теге сценария

 var controllVar = 1;
  

добавьте это в свое родительское окно. (всплывающее окно — это возврат window.open(...) ). На самом деле здесь проводится интенсивное тестирование на ошибки, потому что IE в его различных вариантах показывает более одной ошибки.

 window.onbeforeunload = function (e) {
  //here we try accessing the popup
  try {
      if(!popup amp;amp; popup.controllVar != 1) {
          return;
      }
  } catch(e) {
     return;
  }

  e = e || window.event;

  // For IE and Firefox prior to version 4
  if (e) {
    e.returnValue = 'YOUR ERROR MESSAGE';
  }

  // For Safari
  return 'YOUR ERROR MESSAGE';
};
  

Это будет вести себя точно так же, как здесь, в Stackoverflow, если вы добавите текст в текстовую область ответа, а затем попытаетесь покинуть страницу.