Window.location.href не работает в форме onsubmit
Итак, у меня есть форма и onsubmit="return reg_check(this)"
где reg_check()
- это функция javascript в заголовке, которая должна проверять данные формы, и поскольку одна из ее задач - проверить, находится ли имя пользователя в базе данных, требует php, я хочу перенаправить на страницу php, которая выполняет эту задачу.
Проблема: window.location.href
не работает! Здесь функция (приведенная версия) и, конечно, main.php
- это только случайная страница, которую я получил:
function reg_check(myForm) {
alert("before redirect..");
window.location.href = "http://localhost/main.php?width=" + screen.width + "&height=" + screen.height;
alert("after redirect..");
}
Работает служба before redirect
и after redirect
, она просто не перенаправляется? Он остается на той же странице.
Кроме того, если я попытался перенаправить из тела, просто набрав:
<script type="text/javascript">
alert("before redirect..");
window.location.href = "http://localhost/main.php?width=" + screen.width + "&height=" + screen.height;
alert("after redirect..");
</script>
он перенаправляет.
Любые идеи о том, как я могу заставить это работать?
Ответы
Ответ 1
Вам нужно return false;
от вашей функции reg_check
, а затем в вашем onsubmit, измените его на:
onsubmit="return reg_check(this);"
Это отменит отправку формы. И если вы хотите, чтобы форма была представлена как обычная, просто верните true из reg_check
.
Изменить (чтобы быть более ясным, вам нужно добавить return false, из вашей функции):
function reg_check(myForm) {
alert("before redirect..");
window.location.href = "http://localhost/main.php?width=" + screen.width + "&height=" + screen.height;
return false;
}
Ответ 2
Я видел проблемы в IE, где мне приходилось делать следующее:
window.location.assign(url);
В частности, в обработчике успеха JQuery AJAX. Не могу догадаться, почему, кроме меня, это сработало.
На самом деле я сделал
window.location.replace(url)
Что заменяет текущую страницу в истории. Хороший трюк, который!
Ответ 3
У меня была та же проблема, но нашла ответ здесь Javascript: window.location.href не перенаправляет при вызове функции внутри функции.
Моя кнопка перезагружала страницу по умолчанию, поэтому, если вы добавили
event.PreventDefault();
К вашей функции он должен работать.
Ответ 4
[RESOLVED] У меня была аналогичная проблема при перенаправлении на другой URL-адрес от клиента script. Вместо этого реализована функция window.open, и она сработала. У вас может быть, например, функция say ChangeCity() для вашего события управления html, которое вызывается с событием onchange.
function ChangeCity() {
switch ($("#currentCity").val()) {
case "NY":
var url = '@Url.Action("New York City", "Home", new { @area = "" },Request.Url.Scheme)';
window.location.href = url;
window.open(url,"_top");
return false;
/* случаи для других городов */
}
Вам может понравиться подробнее узнать о window.location.href redirection -Alternative Solution