SharePoint自定义列表中的Java脚本

时间:2011-02-03 23:20:48

标签: sharepoint-2007

在SharePoint列表中,不允许上传文件名中包含任何特殊字符的文件。 (例如:文件& .doc无法上传)

所以我有一个JavaScript代码,用于在提交列表时验证文件名,并创建一个对话框,告诉用户在上传之前重命名文件,然后才能继续。

我的问题是,如果上传的文档超过1个,则代码仅适用于1个文档。它不验证第二项。我需要帮助,以便我可以上传n个项目并验证eac

<Script type="text/javascript"> 
function PreSaveAction() 
{ 
var attachment; 
var filename=""; 
var fileNameSpecialCharacters = new RegExp("[~#%&*{}<>;?/+|\"]"); 
try { 
attachment = document.getElementById("idAttachmentsTable").getElementsByTagName("span")[0].firstChild; 
filename = attachment.data; 
} 
catch (e) { 
} 
if (fileNameSpecialCharacters.test(filename)) { 
alert("Please remove the special characters like ~#%&*{}<>;?/+|\ from the file attachment name and reattach the file.");
return false; 
} 
else { 
return true; 
} 
} 
</script>

3 个答案:

答案 0 :(得分:1)

仅允许2007年sharepoint列表中的某些文件

编辑:包含评论代码:

<Script type="text/javascript">
function PreSaveAction()
{
    var attachment;
    var filename="";
    try
    {
        attachment = document.getElementById("idAttachmentsTable")
                             .getElementsByTagName("span")[0]
                             .fi‌​rstChild;
        filename = attachment.data;
    }
    catch (e) { }
    if (!filename.match(/^(.+?\.xlsx?)$/i))
    {
        alert("Please attach only excel files.");
        return false;
    }
    else
    {
        return true;
    }
}
</script>

答案 1 :(得分:0)

你不能循环浏览文件清单?将所有文件名放入结构/数组/中并查看所有文件名?

答案 2 :(得分:0)

我创建了一个修改后的版本,用于检查所有附件。这里只听一个附件。

这是我的

function chechAttachments() { 

var spanTag; 

var filename=""; 

var fileNameSpecialCharacters = new RegExp("[~#%&*{}<>;?/+|\"]"); 

try { 

spanTag = document.getElementById("idAttachmentsTable").getElementsByTagName("span");

for (var i = 0; i < spanTag.length; i++) {

filename = spanTag[i].innerHTML;

}

} 

catch (e) { 

} 

if (fileNameSpecialCharacters.test(filename)) { 

alert('Attachments cannot contain special characters such as "[~#%&*{<>;?/+|\"]".\n\nPlease remove the special characters from the file attachment name.');

return false; 

}  

}