2014-11-21 70 views
0

我正在支持在IE8上的Intranet上運行的Lotus Notes應用程序。 Domino服務器運行的是8.5.x版本。蓮花多米諾設計師8.5文件上傳控制重置

我正在使用文件上傳控件將單個PDF文件附加到記錄。

一旦記錄保存,關閉並重新打開,它可以很好地附加文件並訪問它。

我想要做的是能夠清除在用戶提交要保存的表單之前選擇的文件。情況是,他們可能會在表單上選擇後續選項來使文件附件無效,並且我希望附件自動清除。

第一次嘗試:直接寫入文件上傳控件的值。

我可以訪問文件上傳控件的值,但它看起來是隻讀的,我不能直接寫入它。

alert('Filename: '+FileUploadControlName.value); // this works 
FileUploadControlName.value = ""; // this doesn't work 

請注意,我通過調用onFocus和onBlur事件中名爲getName的函數來獲取文件上載控件的名稱。

function getName(itm) { 
    FileUploadControlName = itm; 
} 

「其他」的文件上傳控件的HTML標籤的屬性:

onFocus="getName(this)" onBlur="getName(this)" 

第二次嘗試:刪除並重新添加文件上傳控制

我已經拿到了繼續工作:

  1. 將文件上傳控制包裹在一個名爲attControlDiv。
  2. 設置文件上傳控件的ID爲attControl
  3. 使用removeChild Javascript方法刪除文件上傳控件元素。
  4. 刷新表單重新創建文件上傳控件。

這是刪除並重新添加文件上傳控件的代碼:

var parent = document.getElementById("attControlDiv"); 
var child = document.getElementById("attControl"); 
parent.removeChild(child); 

_doClick('refresh', this, null, null); 

雖然這個作品,我想避免的形式刷新,並直接在JavaScript中做到這一點。

有什麼辦法可以重新添加文件上傳控件而不觸發表單刷新?

或者還有另一種方法來清除文件上傳控制的值?

編輯以HTML源代碼的簡化版本地址:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
<head> 
<SCRIPT LANGUAGE="JavaScript" SRC="/XXX\XXX\YYY.nsf/Calendar.js?OpenPage"></SCRIPT> 
<SCRIPT LANGUAGE="JavaScript" SRC="/XXX\XXX\YYY.nsf/Common.js?OpenPage"></SCRIPT> 
<link rel="stylesheet" type="text/css" href="/XXX\XXX\YYY.nsf/ActionBar.css?OpenPage"></style> 
<link rel="stylesheet" type="text/css" href="/XXX\XXX\YYY.nsf/Common.css?OpenPage"></style> 
<link rel="stylesheet" type="text/css" href="/XXX\XXX\YYY.nsf/WebTabs.css?OpenPage"></style> 

<!-- code removed --> 

</head> 
<body text="#000000" bgcolor="#FFFFFF" leftmargin="0" topmargin="0" onload="frm=document.forms[0]; "> 

<!-- code removed --> 

<form method="post" action="/XXX/XXX/XXX.nsf/XXX?OpenForm&amp;Seq=1" enctype="multipart/form-data" name="_XXX"> 

<!-- code removed --> 

    <tr> 
     <td class="LRTableLabel"> 
      Attach PDF</td> 
     <td colspan="4" class="LRTableData"><div id="attControlDiv"> 
<input id="fileAttach" maxlength="12" type="file" name="%%File.ca2579e50002791d.e132be8c801a6853ca2575d6000ae341.$Body.0.9D60">  
<input type="button" onclick="$('#fileAttach').MultiFile('reset');" value="fileAttach Clear"> 
<script type="text/javascript" src="/XXX\XXX\YYY.nsf/jquery-1.8.0.min.js?OpenPage"></SCRIPT> 
<script type="text/javascript" src="/XXX\XXX\YYY.nsf/jquery.MultiFile.js?OpenPage"></SCRIPT> 
<script> 
$(function(){ 
    $('#fileAttach').MultiFile({ 
     max: 1, 
     accept: 'pdf' 
    }); 
}); 
</script> 
     <!-- -->&nbsp;</div></td> 
    </tr> 

<!-- code removed --> 

</form> 
</body> 
</html> 

由於這個應用程序在那裏我不能鏈接到外部網頁上運行的內部網中的限制,我已經下載了jQuery和多文件js代碼並將它們實現爲代碼數據庫中的頁面,該代碼數據庫已成功用於所有其他代碼庫。

回答

0

我已經能夠實現使用jQuery多文件插件類似的東西,在這裏找到:http://www.fyneworks.com/jquery/multiple-file-upload/

我的Domino Web應用程序顯示到客戶端表單提交時,系統將待處理的上傳文件的列表,並允許在提交之前刪除所有或任何這些文件。

這個插件還可以讓你限制附件數量(在你的情況下,1)和允許的文件類型(只在你的情況下.PDF)。

實現起來非常簡單。這裏有一個關於它如何爲你工作的建議。

<form> 
<div><input type="file" name="%%File.123123123123123.1231231231231231231231231.$Body.0.70" id="fileAttach" maxlength="12"></div> 
<div>if below field equals 'clear', attachments will clear on field exit :</div> <div><input id="clearAttachments" type="text" /></div> 
</form> 

<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.0.min.js"></script> 
<script type="text/javascript" src="http://www.something.com/jquery.MultiFile.js"></script> 
<script> 
$(function(){ 
    $('#fileAttach').MultiFile({ 
     max: 1, 
     accept: 'pdf' 
    }); 
}); 
</script> 
<script> 
$('#clearAttachments').blur(function() { 
    if ($('#clearAttachments').val() == "clear") { 
     $('#fileAttach').MultiFile('reset') 
    } 
}); 
</script> 

我應該補充一點,我與這個插件的創造者沒有任何關係 - 只是一個粉絲。

你也可以在這裏嘗試一下:http://jsfiddle.net/shwguhj6/

也將在ID需要的文件上傳元素,像這樣:

file upload control ID

+0

感謝這個尼克。這看起來應該適合我需要的東西。 – Tim 2014-11-24 03:05:47

+0

我無法正常工作,這是我所做的。 HTML頭內容:引用jQuery和多文件JS 文件上傳控制:ID:fileAttach 我已經把$(函數(){$('#fileAttach ....工作,你投入的例子進onLoad section。我不確定它是否應該在這裏或只是在JS頭,我都嘗試過,但似乎都沒有工作 不知道我還需要做什麼文件上傳就像以前一樣工作,看起來多文件代碼沒有被觸發,它不會像jsfiddle中的例子那樣反應。 我錯過了什麼? – Tim 2014-11-24 03:07:55

+0

您好 - 請確保您將ID添加到文件上傳控件(請參閱上文)。另外,如果添加「$(function(){$('#fileAttach .... f unction「下面的文件上傳控件作爲passthru HTML在您的表單上,它位於標籤之間。 – 2014-11-24 03:26:26

相關問題