2011-10-21 73 views
0

我有一種感覺,這很容易,但是,我一直在爲它工作了幾個小時,並沒有取得成功。添加功能提交按鈕

我使用的淺體模態窗口的iframe版本:

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應用加載Facebook iframe本身。當在Facebook頁面中加載時,代碼不會執行任何操作。

有沒有人有更好的方式把提交按鈕放在這個?

回答

0

不應該有太多麻煩,放在iframe的iframe裏面,但是:

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

...很可能引起麻煩。你是那種跟蹤您的形式,而我會嘗試表單元素直接目標,即爲其分配一個ID:

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

,並使用美元符號來得到它:

$('myForm').submit(); 
+0

@卡斯米爾當我嘗試它時,這沒有奏效。據我所知,它的工作原理與我所做的一樣。 $('#myForm')。submit();'does not work but'window.frames [window.frames.length-1]。$('#myForm')。submit();'did work(雖然只有它自己的網頁不在facebook iframe視圖中)。我認爲JavaScript在父頁面上執行,所以我需要能夠在運行提交之前深入到iframe。我可以設置ID的名稱,並試圖與此工作,但我沒有運氣。 – user967891

+0

好的,也許你可以嘗試一種不同的方法,不要使用Lightface中的「內置」方法。所以,只需在iframe中添加一個帶inline javascript的事件監聽器:'(script type =「text/javascript」> $('myForm')。addEvent('click',function(el){el.submit();} );'。此外,如果問題可能與使用Facebook iframe時未顯示的元素有關,則可以嘗試Lightface中的getBox()方法。 – kasimir

+0

使用getBox()方法得到它的工作。這實際上得到了iframe所在的表格,但從那裏開始,並不是很難到達iframe。謝謝您的幫助。 – user967891