2011-11-22 62 views
3

我有一個帶有窗體的html頁面。在這種形式下,我有1個輸入字段可供用戶使用,其類型設置爲file。表單通常是隱藏的。使用Javascript生成的html代碼在Internet Explorer中的問題

當用戶按下一個調用jQuery.dialog()函數的按鈕時,將顯示該窗體。對話框get創建得很好,但輸入字段從不顯示。我無法確定它是否顯示出來,或只是放在屏幕之外。

同樣的情況發生在javascript自動生成的表格中。該表由多個輸入元素(儘管不同類型)和每行1個選擇元素組成。現在select元素正確顯示,所有的輸入元素都沒有。

這是Internet Explorer的問題嗎?因爲所有其他(主要)瀏覽器都顯示它很好。主流瀏覽器,我的意思是Chrome,FF,Safari & Opera。


編輯>來源

在頁面形式:

<form title="Upload snapshot" class="hidden" enctype="multipart/form-data" id="fileUpload" name="fileUpload"> 
    <input type="hidden" name="command" value="load" /> 
    <input type="hidden" name="table" id="formTable" /> 
    <input type="file" id="uploadedFile" name="uploadedFile" /> 
</form> 

,輪流形式進入對話的功能:

function LoadDatabase(){ 
    var form = document.getElementById('fileUpload'); 
    var table = document.getElementById('formTable'); 
    $(table).attr('value', Settings['table']); 
    $(form).dialog({ 
     position : 'center', 
     autoOpen : true, 
     width  : 500, 
     modal  : true, 
     draggable : true, 
     buttons  : { 
     "Ok" : function(){ 
      // Code to hande the file upload... 
      $(form).dialog('close'); 
     }, 
     "Cancel" : function(){ 
      $(form).dialog('close'); 
     } 
     }, 
     close  : function(){ 
     } 
    }); 
} 

由於的複雜性表中,生成表的代碼是相當多的。基本上,js得到了json格式的條目集合。這個集合被解碼,併爲每種類型的列創建一個適當的單元格並添加到頁面的文檔中。所有這一切的核心位是:

var tbodyNew = document.createElement('tbody'); 
$(data.Data).each(function(value) { 
    row=this; 
    var trRowNew = document.createElement('tr'); 
    $(trRowNew).attr('id', row['id']); 
    var tdNew = document.createElement('td'); 
    var rowSelect = document.createElement('input'); 
    $(rowSelect).attr('type', 'checkbox'); 
    $(rowSelect).addClass('row-selector'); 
    $(rowSelect).addClass('hidden'); 
    $(tdNew).append(rowSelect); 
    $(trRowNew).append(tdNew); 
    for (var columnId in Columns) { 
     tdNew = document.createElement('td'); 
     if (Columns[columnId].Name == 'id') { 
      $(tdNew).addClass('hidden'); 
     } 
     $(tdNew).attr('id', Columns[columnId].Name); 
     $(tdNew).append(AddCell(columnId, row)); 
     $(trRowNew).append(tdNew); 
    } 
    $(tbodyNew).append(trRowNew); 
}); 
$(tableNew).append(tbodyNew); 
$(form).html(''); 
$(form).append(tableNew); 

AddCell()方法確定應該用於輸入(複選框,文本等)的類型。


編輯2>附加圖片

爲了進一步解釋所發生的事情:

的圖像顯示在背景的表呈現的不同的方式,以及顯示在對話框前景。

enter image description here

enter image description here


編輯3> DOM檢查

我檢查DOM結構在Internet Explorer中,我已經看到了元件置於頁面...他們只是沒有渲染。看來他們沒有得到一個合適的高度&寬度。雖然檢查自己的風格,這表明這些屬性都設置爲「自動」:

enter image description here

+1

請將您的HTML和JS代碼發佈給我們看。以目前的形式回答你的問題是不可能的。 – vzwick

+0

請檢查您的html和JS代碼一些錯誤不會被Firefox識別,但IE會識別並停止加載剩餘的腳本。可能會出現一些HTML和JS代碼的問題。 – Unknown

+0

有沒有什麼工具可以做到這一點? – ThaMe90

回答

0

在追求解決這個問題,我發現,當輸入有它的顯示屬性設置爲表 - 行,Internet Explorer會窒息它。刪除該屬性將解決該問題。看來,雖然,根據文件,這實際上是所需的功能。雖然奇怪的是,其他瀏覽器沒有按照說明文檔。