繁体   English   中英

Lotus domino Designer 8.5文件上传控件重置

[英]Lotus domino Designer 8.5 File Upload Control reset

我支持在IE8的Intranet上运行的Lotus Notes应用程序。 Domino服务器正在运行8.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)"

第二次尝试:删除并重新添加文件上传控件

我有以下工作:

  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>

由于Intranet内部存在该应用程序无法在其上链接到外部网页的地方运行的限制,因此我已经下载了jquery和多文件js代码,并将它们实现为代码数据库中的页面,该数据库成功地用于其他所有页面代码库。

我已经可以使用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到文件上传元素,如下所示:

文件上传控件ID

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM