2014-02-19 115 views
0

就像問題所述,我試圖在模態保持不變時從模態窗口中清除窗體。我試過:。如何使用javascript清除模態窗口背後的窗體?

if (myDocument.title == "Modal Window") { 
    parent.document.getElementById("textbox") 
} 

(我需要做的超過1個TB,但使用的只是爲了嘗試到那裏沒有運氣

它包含一個iFrame內,所以我嘗試:

if (myDocument.title == "Modal Window") { 
    var ifr = document.getElementById("iFrame") 
    var form = ifr.document.getElementById("form") 
    ClearForm(form) 
} 

的ClearForm()函數,我從另一個堆棧溢出的答案偷:

function ClearForm(form) { 
    $(':input', form).each(function() { 
     var type = this.type; 
     var id = this.id; 
     if (type == 'text' && id != 'text2') 
      this.value = ""; 
    }); 
} 

這是文本2「是一個特異性我們需要保持人口稠密。

任何想法我失蹤?我一直困擾着這個bug數週。

+0

你得到了什麼錯誤?請參閱[這個答案](http://stackoverflow.com/questions/3999101/html-getting-document-from-iframe)如何訪問iframe中的元素(假設它從相同的來源加載文檔)。 – linstantnoodles

+0

這就是問題 - 我沒有收到任何錯誤,它只是不起作用。 [可能比獲取js錯誤更令人沮喪。] –

+0

那麼你知道代碼破解的地方嗎? (做一個關於如何調試JavaScript的搜索)。如果這不起作用,請嘗試將代碼放在小提琴上,因爲我認爲我們需要更多信息。 – linstantnoodles

回答

0

我希望你的問題是表單是在一個iFrame內 - 大多數瀏覽器不允許你修改iFrame中的元素,如果它們不是來自同一個源(或者如果服務器被設置爲拒絕它,或者如果你在本地看網頁... see here有詳細介紹)

要仔細檢查,儘量形式標記移動到相同的頁面模式是在和運行你的功能ClearForm從那裏。我希望你會發現它的作品。

你唯一的解決方法是在iFrame的頁面中包含ClearForm函數,然後從父頁面觸發它。

+0

「大多數瀏覽器不允許您從父頁面修改iFrame中的元素。」你能詳細說明嗎?除了相同的原產地規定外,我不認爲這是事實。 – linstantnoodles

+0

當然。有一個閱讀[這裏](http://stackoverflow.com/questions/364952/jquery-javascript-accessing-contents-of-an-iframe)。爲了按照要求進行操作,「ClearForm」函數需要駐留在iFrame的頁面(而不是父頁面)中。 – johnkavanagh

+0

他們都使用相同的JS,但有不同的HTM,如果有所幫助。 –