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

时间:2014-11-21 02:34:35

标签: javascript file-upload lotus-notes

我支持在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)"

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

我有以下工作:

  1. 将文件上传控件包装在名为attControlDiv的部门中。
  2. 将文件上传控件的ID设置为attControl
  3. 使用removeChild Javascript方法删除文件上传控件元素。
  4. 刷新表单以重新创建文件上传控件。
  5. 这是删除和重新添加文件上传控件的代码:

    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代码,并将它们实现为代码数据库中的页面(成功)用于所有其他代码库。

1 个答案:

答案 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处,如下所示:

file upload control ID