Добавить функциональную кнопку отправки

#javascript #facebook #forms #iframe #mootools

#javascript #Facebook #формы #iframe #mootools

Вопрос:

У меня такое чувство, что это легко, но я работал над этим несколько часов без особого успеха.

Я использую iframe-версию модальных окон LightFace:

http://davidwalsh.name/facebook-lightbox

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

 light = new LightFace.IFrame({ height:440, width:550, url: 'http://samplePage.html',
title: 'Sample' }).addButton('Submit', function() { 
window.frames[window.frames.length-1].formName.submit();},'blue')
.addButton('Close', function() {light.close(); },true).open();
 

Я не очень уверен в этом коде, но я думаю, что для отправки он попадает в iframe, который я ищу, просто предполагая, что он предпоследний. Это работает на веб-странице. К сожалению, я создаю это для приложения Facebook, которое загружается внутри самого iframe Facebook. При загрузке на странице facebook код ничего не делает.

У кого-нибудь есть лучший способ добавить кнопку отправки в это?

Ответ №1:

Однако не должно возникнуть особых проблем с помещением iframe внутри iframe:

 window.frames[window.frames.length-1].formName.submit();
 

… вполне может вызвать проблемы. Вы как бы отслеживаете свою форму, в то время как я бы попытался напрямую настроить таргетинг на элемент формы, то есть присвоить ему идентификатор:

 <form id="myForm"><!--- some form stuff --></form>
 

и используйте знак доллара, чтобы добраться до него:

 $('myForm').submit();
 

Комментарии:

1. @kasmir Это не сработало, когда я попробовал. Насколько я могу судить, это работает практически так же, как и то, что я делал. $('#myForm').submit(); не сработало, но window.frames[window.frames.length-1].$('#myForm').submit(); сработало (хотя только на собственной странице, а не в представлении iframe facebook). Я думаю, что javascript выполняется на родительской странице, поэтому мне нужно иметь возможность перейти к iframe перед запуском отправки. Я могу установить имя идентификатора и попытался работать с этим, но мне не повезло.

2. Хорошо, возможно, вы могли бы попробовать другой подход, не используя «встроенный» метод от Lightface. Итак, просто добавьте прослушиватель событий со встроенным javascript в iframe : <script type="text/javascript"> $('myForm').addEvent('click', function(el) { el.submit(); }); </script> . Кроме того, вы можете попробовать метод getBox() из Lightface, если проблема может быть связана с тем, что элемент не «виден» при использовании iframe Facebook.

3. Заставил его работать, используя метод getBox(). На самом деле это таблица, в которой находится iframe, но оттуда было не так уж сложно добраться до iframe. Спасибо за помощь.