Передача формы из iframe к родителю с условиями - PullRequest
0 голосов
/ 16 марта 2012

Я недавно задал похожий вопрос Закрыть iframe Colorbox после отправки формы, а затем перенаправить родительскую страницу , но с тех пор немного изменил направление, поэтому я подумал, что лучше создать новую запись.

Iиметь форму добавления в корзину внутри iframe (и мой родитель, и iframe находятся на одном сервере / каталоге).При отправке я хотел бы передать форму скрипту на родительской странице.скрипт закроет окно iframe (colorbox) и отправит форму, но есть одно исключение;У меня есть две версии моего сайта: одна для стандартных браузеров, в которой для отображения продукта используется iframe, и мобильный сайт, который напрямую открывает страницу продукта и работает как есть.Оба используют одну и ту же базу данных, в которой хранится информация, что означает, что формы всегда одинаковы, поэтому мне нужно условие, что-то вроде , если эта страница находится в iframe (передайте форму в скрипт на parent для отправки) еще (отправить форму как есть) .Я нашел этот фрагмент здесь в stackoverflow, который, по моему мнению, должен работать для условного выражения:

if (top === self) { not in a frame } else { in a frame }

У меня есть три разные формы, каждая из которых находится на отдельной странице продукта:

Самая базовая:

<form name="add_cart" action="index.php?action=add" method="post" 
enctype="multipart/form-data">

<input type="hidden" name="quantity" value="1" /> 
<input type="hidden" name="products_id" value="1" /> 
<input type="hidden" name="id[1]" value="1" id="att-1-1" />
<input type="hidden" name="id[2]" value="2" id="att-2-2" /> 


<input class="cssButton button" type="submit" value="Add Product"/> 
</form>

Затем один с несколькими вариантами флажков:

<form enctype="multipart/form-data" method="post" action="index.php?action=add" 
name="cart_quantity">

<input type="hidden" value="1" name="quantity">
<input type="hidden" value="3" name="products_id">

<input id="option-8-1" type="checkbox" value="1" name="id[8][1]">
<input id="option-8-2" type="checkbox" value="2" name="id[8][2]">
<input id="option-8-3" type="checkbox" value="3" name="id[8][3]">
<input id="option-8-4" type="checkbox" value="4" name="id[8][4]">

<input class="cssButton button" type="submit" value="Add Selected Items" >
</form>

И третий с выпадающим выбором для одного параметра:

<form enctype="multipart/form-data" method="post" action="index.php?action=add" name="cart_quantity">


<input type="hidden" name="quantity" value="1" />
<input type="hidden" name="products_id" value="3" />  
<input type="hidden" name="id[6]" value="9" id="att-6-9" /> 

<select name="id-7" id="options">
<option value="1">option 1</option>
<option value="2">option 2</option>
<option value="3">option 3</option>
<option value="4">option 4</option>
</select>

Я ищу любую помощь или руководство, чтобы заставить это работать.Хотя у меня есть лучшее сцепление с Javascript, Jquery будет в порядке, все ценится.

1 Ответ

0 голосов
/ 16 марта 2012

Вам не нужно условное, просто используйте javascript ненавязчиво, т.е. если javascript включен, javascript останавливает (угоняет) отправку формы, отправляет данные формы родителю и закрывает iframe - если javascript не включен, формаотправляет нормально: например, с помощью jQuery

<form id="my-form">
</form>

<script>
    function formSubmissionHandler(){
        // handle form submission
    }

    $(document).ready(function(){
        $('#my-form').submit(function(){
            formSubmissionHandler();
            return false;
        });
    });
</script>

http://en.wikipedia.org/wiki/Unobtrusive_JavaScript

...