我支持在IE8上的Intranet上运行的Lotus Notes应用程序。 Domino服务器正在运行V8.5.x。
我正在使用文件上传控件将单个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)"
第二次尝试:删除并重新添加文件上传控件
我有以下工作:
这是删除和重新添加文件上传控件的代码:
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&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>
<!-- --> </div></td>
</tr>
<!-- code removed -->
</form>
</body>
</html>
由于Intranet中的限制,该应用程序在我无法链接到外部网页的地方运行,我已经下载了jquery和多文件js代码,并将它们实现为代码数据库中的页面(成功)用于所有其他代码库。
答案 0 :(得分:0)
我已经能够使用JQuery Multifile插件实现类似的功能,可以在这里找到: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处,如下所示: