Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.11.2014, 22:28
Аспирант
Отправить личное сообщение для Boolean_Type Посмотреть профиль Найти все сообщения от Boolean_Type
 
Регистрация: 02.02.2014
Сообщений: 48

Переадресация при onclick на submit
Есть код:
<form method='POST'>
<input type='text'>
<input type='submit' onclick = 'f();'>
</form>
<script>
function f () {
	document.location.href="http://yandex.ru";
}
</script>


Переадресации не происходит. Почему? Ведь сначала выполняется js-скрипт, и лишь затем - отправка данных на сервер, как, например, здесь:

<form method='POST' action='2.php'>
<input type='submit' onclick = 'f();'>
</form>
<script>
function f () {
	alert(1); //выдаст 1, затем - обработка данных скриптом '2.php' (т.е., по сути, редирект на '2.php')
}


А в коде ниже - происходит, если для submit прописать return false;
<form method='POST'>
<input type='text'>
<input type='submit' onclick = 'f();return false;'>
</form>
<script>
function f () {
	document.location.href="http://yandex.ru";
}
</script>


Объясните, пожалуйста.

Последний раз редактировалось Boolean_Type, 10.11.2014 в 22:34.
Ответить с цитированием
  #2 (permalink)  
Старый 11.11.2014, 04:38
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

<input type='button' onclick = 'f();'>

<script>
function f () {
    document.location.href="http://yandex.ru";
    document.location.href="http://google.com";
}
</script>


Куда происходит переход? Отправку формы браузером считай за невидимую тебе вторую строчку js-кода с редиректом.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 11.11.2014, 14:53
Аспирант
Отправить личное сообщение для Boolean_Type Посмотреть профиль Найти все сообщения от Boolean_Type
 
Регистрация: 02.02.2014
Сообщений: 48

Ни хера не понял.
Тем более, в твоём примере баттон.
Так что там с моим кодом? :-) Объясни, пожалуйста, что происходит.
Ответить с цитированием
  #4 (permalink)  
Старый 11.11.2014, 14:59
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от Boolean_Type
<input type='submit' onclick = 'f();'>
Пофиг какой там у тебя "редирект" - все равно идет сабмит формы по ее action.

Сообщение от Boolean_Type
<input type='submit' onclick = 'f();return false;'>
Выполняется только скрипт... Форма не отправляется.
Ответить с цитированием
  #5 (permalink)  
Старый 11.11.2014, 15:27
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

В action формы и пишут урл куда она пойдет. Как это сделано во втором примере. Это НЕ редирект, это - цель - куда должен пойти запрос. Если экшн пустой, или вообще нет, то цель - URI. То есть текущий. Отправку формы можно запретить и послать на хуяндекс - но форма туда уже не придет.
Ответить с цитированием
  #6 (permalink)  
Старый 11.11.2014, 15:32
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Понял, ТС пожизненно не видел action, поскольку практикуется примитивный паттерн редиректить на самого себя. Форма отгружается в тот же скрипт который ее сгенерил, а чтобы спина не была белая редиректит после записи на самого себя. Увидев action первый раз в жизни он и подумал - редирект!

Меж тем в экшон можно написать search string, а форму отгружать методом post и получать на сервере и то и другое одновременно.

<form action="/some/path/?some=value&an=other" method="post">
Ответить с цитированием
  #7 (permalink)  
Старый 11.11.2014, 15:32
Аспирант
Отправить личное сообщение для Boolean_Type Посмотреть профиль Найти все сообщения от Boolean_Type
 
Регистрация: 02.02.2014
Сообщений: 48

Я понимаю, почему идёт переадресация на Яндекс, если есть "return false;". Но почему этот скрипт:
document.location.href="http://yandex.ru";

НЕ выполняется, если "return false;" нет?
Ответить с цитированием
  #8 (permalink)  
Старый 11.11.2014, 15:34
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от Boolean_Type
Но почему этот скрипт:
document.location.href="http://yandex.ru";
НЕ выполняется, если "return false;" нет?
Повторюсь...
Сообщение от ksa
Пофиг какой там у тебя "редирект" - все равно идет сабмит формы по ее action.
Ответить с цитированием
  #9 (permalink)  
Старый 11.11.2014, 15:37
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Сообщение от Boolean_Type
НЕ выполняется, если "return false;" нет?
Звоните 03. 01 еще можно. Потому и не выполняется что нет return false. Про 01. Он что, думал можно отгрузить туда, а послать сюда? Типа поняли, да?
Ответить с цитированием
  #10 (permalink)  
Старый 11.11.2014, 15:51
Аспирант
Отправить личное сообщение для Boolean_Type Посмотреть профиль Найти все сообщения от Boolean_Type
 
Регистрация: 02.02.2014
Сообщений: 48

Бля, ну потому и спросил, что не понял!
Я же видел, что сначала js-скрипты выполняются, а потом отправка на сервер. Вот и удивился, думал, что переадресация по document.location.href раньше будет!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JavaScript, Выделить все значения в multiselect при нажатии submit VBeregovoy Общие вопросы Javascript 2 06.02.2013 20:09
Почему скрипт отрабатывает в IE только при первом входе на сайт? tygeddar Элементы интерфейса 3 20.09.2012 01:37
Подружить два скрипта (скроллер+скрипт эффекта при наведении) Che jQuery 26 29.08.2012 10:59
onClick на button при нажатии Enter atech Events/DOM/Window 2 09.08.2012 16:48
Перенаправление OnClick при условии Pacan4ik Элементы интерфейса 0 09.04.2012 06:32