Как остановить загрузку страницы с помощью 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, жизненный цикл в любом случае не достигнет стороны сервера.
В целом, похоже, у вас есть как минимум три ошибки в этом элементе управления:
- Вам определенно нужно
return
частьOnClientClick
приписывать. - Вам нужно изменить
Class
приписыватьCssClass
, - Вам, вероятно, нужно использовать что-то кроме
PostBackUrl
на этой кнопке.
Вы можете прочитать больше об этом здесь:
Для разработки.,,
Если вы пытаетесь отправить пользователя на другой сайт после завершения выполнения кода, PostBackUrl
Атрибут не может быть использован так, как вы нам показали. Например, в вашем примере, даже если это сработало, пользователь, скорее всего, увидит это: