Есть одна очень неприятная особенность в работе SP 2010, не знаю как в других версиях. При попытке загрузить файл с именем, содержащим "%" как вложение в элемент списка, получаем неожиданную ошибку и элемент сохраняется без вложения. К сожалению так и не нашел готового решения, посему сделал вот так:
Списка неподдерживаемых символов пока у меня нету, добавляю по одному. Функцию вызывать из presaveitem или presaveaction
Чтобы вставить код в форму создания элемента, можно использовать веб-часть «Редактор контента» из раздела «Среда и контент», нажать html, изменить исходный тест html и туда вписать код. Я себе сделал специальную веб часть, в которой реализован наиболее частый функционал JS, например скрытие полей.
function CheckFiles()
{
if(document.getElementById('idAttachmentsRow').style.display!='none') //Если есть вложения. Можно вставить return false в else, если вложения обязательны.
{
var idx;
for (idx = 0; idx < document.getElementById('idAttachmentsTable').rows.length; ++idx)
{
var str = document.getElementById('idAttachmentsTable').rows[idx].cells[0].innerHTML;
str = str.split(">")[1];
var attachname = str.split("<")[0];
if (attachname.indexOf("%")!=-1) {
alert("Недопустимое имя вложения! Символ % запрещен!");
return false;
}
if (attachname.indexOf("=")!=-1) {
alert("Недопустимое имя вложения! Символ = запрещен!");
return false;
}
if (attachname.indexOf("'")!=-1) {
alert("Недопустимое имя вложения! Символ ' запрещен!");
return false;
}
if (attachname.indexOf("№")!=-1) {
alert("Недопустимое имя вложения! Символ № запрещен!");
return false;
}
if (attachname.indexOf("#")!=-1) {
alert("Недопустимое имя вложения! Символ # запрещен!");
return false;
}
}
return true;
}
Списка неподдерживаемых символов пока у меня нету, добавляю по одному. Функцию вызывать из presaveitem или presaveaction
function PreSaveItem()
{
return CheckFiles();
}
Чтобы вставить код в форму создания элемента, можно использовать веб-часть «Редактор контента» из раздела «Среда и контент», нажать html, изменить исходный тест html и туда вписать код. Я себе сделал специальную веб часть, в которой реализован наиболее частый функционал JS, например скрытие полей.