2015-02-09 2 views
-1

ОК, так что у меня есть форма, которая позволяет пользователю, чтобы сделать заказ на событие следующим образом:Почему мой javascript window.opener.location.reload перезагружает другой URL?

<h3>Booking Form</h3> 
<p><form method="post" action="/heroes-and-heroines-larp-and-lrp-events.php?task=submitBooking" class="bookingForm"> 
<label for="role">Booking:</label> 
<select name="role" id="role"> 
<option value="Player">Play</option> 
<option value="Monster">Monster</option> 
<option value="MIA">Unable to Attend</option> 
<option value="Referee">Referee</option> 
</select><br /> 
<div id="AttendeeName"><label for="bookingName">Attendee Name:</label><select name="bookingName" id="listedBookingName"> 
<option value="1">3rd spearman</option> 
<option value="2">4th spearman</option> 
</select></div> 
<div id="CharacterName"><label for="characterName">Character Name:</label><select name="CharacterName" id="listedCharacterName"> 
<option value="1">Jack Dawkins</option> 
<option value="2">Reverand Blighty Shrewson</option> 
<option value="3">Sydion</option> 
**</select><button class="button" onClick="window.open('http://www.heroesandheroines.org/index.php?task=siteForm', '', 'width=500, height=500');"><span class="formButton">create a new character</span>**</button></div> 
<div id="telephoneNumber"><label for="telephone">Telephone Number:</label> 
<input required type="tel" id="telephone" name="telephone" value="" /></div> 
<div id="emailAddress"><label for="email">E-mail Address:</label> 
<input required type="email" id="email" name="email" value="[email protected]" /></div> 
<div id="notes"><label for="notes">Notes:</label> 
<textarea id="notes" name="notes" rows="4" cols="50" placeholder="notes" /></textarea> 
</div><input type="hidden" name="returnPage" value="http://heroesandheroines.org/heroes-and-heroines-larp-and-lrp-events/124_tbc.html" /> 
<input type="hidden" name="dungeonid" value="124" /> 
<input type="submit" name="submit Booking" value="Submit Booking" /> 
&nbsp;<a href="">CANCEL</a></p> 
</form> 

Кнопка <button class="button" onClick="window.open('http://www.heroesandheroines.org/index.php?task=siteForm', '', 'width=500, height=500');"> пожаров открыть новое окно, которое позволяет пользователю создавать аа новый символ для использовать на мероприятии.

Новое окно имеет на следующие JavaScript:

<script> 
    window.onunload = refreshParent; 
    function refreshParent() { 
     window.opener.location.reload() 
    } 
</script> 

Теперь это незавершенное, но то, что я хочу для дочернего окна для обновления родительского окна, ОДНАКО, дочернее окно не обновить исходное содержимое родительского окна (http://heroesandheroines.org/heroes-and-heroines-larp-and-lrp-events.php?task=bookingForm&eventID=124) ... Он загружает http://heroesandheroines.org/heroes-and-heroines-larp-and-lrp-events.php?task=submitBooking, который является объектом формы ... Как получить родительское окно для обновления URL-адреса, а не URL-адрес формы?

Кроме того, я совершенно смущен, поскольку ПОЧЕМУ он ведет себя следующим образом ... Конечно, window.opener.location.reload СЛЕДУЕТ просто обновить страницу из URI запроса или что-то еще?

+0

'действий ="/герои-и-героинь-ПВЗП-и-LRP-события .php? task = submitBooking. '' Ваша 'форма' отправляется, поэтому изменяется URL-адрес. – melancia

ответ

0

A <button> имеет type attribute, по умолчанию submit. IE, когда вы нажимаете кнопку, а также открываете новое окно, она также отправляет форму в фоновом режиме, которая обновляет ваш URL. Добавить в атрибуте к кнопке type, и указать его в качестве button - это остановит форму от представления в фоновом режиме:

<button type="button" class="button" onClick="window.open('http://www.heroesandheroines.org/index.php?task=siteForm', '', 'width=500, height=500');"> 
+1

В качестве дополнения: это не похоже на большой UX - если пользователь выполняет некоторую работу в форме, затем нажимает кнопку, когда это окно закрывается, страница перезагружается, и пользователь потеряет все, что они ввели до сих пор –

+0

Да, я просто посредине, так что это просто работа, но это хороший момент, о котором я не думал! В принципе, пользователь создаст новый символ с помощью всплывающего окна, отправьте форму (инициируя функцию refreshParent), и затем мне нужно добавить этот новый символ к выпадающему «characterName», но я не думал о факт, что это сотрет всю работу, которую они сделали в форме ... Черт возьми! Спасибо за подсказку и спасибо за решение, которое отлично работает! :) –

Смежные вопросы