Как остановить загрузку страницы с помощью JavaScript

У меня есть кнопка с PostBackUrl. Также я назначил функцию его методу onclientclick, в котором была написана некоторая логика страницы, включая пару правил проверки. если вся страница была недействительной, этот метод возвращает False, но я не могу остановить страницу. Я пробовал document.execCommand('Close') и Window.Stop(), но безуспешно.

Какие-либо предложения?

Редактировать: Кнопка:

<asp:Button ID="btnSubmit" runat="server" OnClientClick="return DoLogic()"  PostBackUrl="http://google.com" Class="btn_submit"/>

DoLogic:

function DoLogic() {

if (ValidateForm()) {
blah blah blah
return true;
}
else {
alert("Has Error");
return false;
}

ValidateForm:

function ValidateForm(){
if (haserror)  
{  
return false; 
} 
return true; 
}

2 ответа

Решение

Ты можешь использовать .preventDefault() Метод на вашем мероприятии. Это остановит действие по умолчанию при загрузке страницы при нажатии кнопки.

http://www.w3.org/TR/DOM-Level-2-Events/events.html

Вы также можете return false; внутри вашего DoLogic(), Это также остановит загрузку страницы.

onclientclick="return DoLogic()"

Тогда в вашей функции:

function DoLogic(){
    //blah blah blah
    return false;
}

ОБНОВИТЬ

Если вы делаете все это и у вас все еще есть проблемы, попробуйте добавить это к вашей кнопке:

onclick="javascript:return false"

ОБНОВЛЕНИЕ ОТ ОП

Ваш код не работает, потому что в операторе if вы return true; и false возвращается только в том случае, если дерьмо попало в вентилятор (то есть ошибка). Вам нужно возвращать false каждый раз. ИЛИ использовать .preventDefault() как я уже упоминал ранее.

Я читал, что PostBackUrl может доставить вам неприятности, особенно в этом случае, потому что похоже, что вы используете его неправильно. Я думаю, вы можете быть смущены тем, что делает PostBackUrl. Это атрибут, используемый при публикации на нескольких страницах. Если вы пытаетесь перенаправить пользователя на другую страницу после завершения обратной передачи, используйте Response.Redirect() в коде позади или использовать <asp:HyperLink> вместо тега.

Там не должно быть никаких причин, по которым вы не могли бы использовать Response.Redirect(), Просто добавьте его в конец вашего скрипта в коде. Если проверка на стороне клиента возвращает false, жизненный цикл в любом случае не достигнет стороны сервера.

В целом, похоже, у вас есть как минимум три ошибки в этом элементе управления:

  1. Вам определенно нужно return часть OnClientClick приписывать.
  2. Вам нужно изменить Class приписывать CssClass,
  3. Вам, вероятно, нужно использовать что-то кроме PostBackUrl на этой кнопке.

Вы можете прочитать больше об этом здесь:


Для разработки.,,

Если вы пытаетесь отправить пользователя на другой сайт после завершения выполнения кода, PostBackUrl Атрибут не может быть использован так, как вы нам показали. Например, в вашем примере, даже если это сработало, пользователь, скорее всего, увидит это:

введите описание изображения здесь

Другие вопросы по тегам