在我的sharepoint列表中,我正在处理应该具有附件的项目。我自定义了模板,以便它允许我添加附件,但我看不到将附件标记为必填的可能性。我设法用脚本检查了附件
<script type="text/javascript" language="javascript">
function PreSaveAction()
{
var elm = document.getElementById("idAttachmentsTable");
if (elm == null || elm.rows.length == 0)
{
document.getElementById("idAttachmentsRow").style.display='none';
alert("Please attach Documents");
return false ;
}
else { return true ;}
}
</script>但我只能在自定义表单(不是模板)中使用它。由于模板用于与列表的几乎所有交互,所以我想使用它,并希望在模板加载后执行js代码。该模板在标记<ZoneTemplate>和</ZoneTemplate>之间引用。表单中有更多的代码,但是sharepoint-designer不允许我编辑这两个标签之间的任何东西。
这真的很令人沮丧,因为我似乎遗漏了一个显而易见的观点。希望我提供了足够的信息,因为我不习惯与sharepoint和他们的表单和模板的工作…
发布于 2015-02-20 00:49:43
当您需要向列表表单添加JavaScript时,可以直接浏览到该表单。例如,如果您的列表名为MyList,则新的项目表单将位于http://url/Lists/MyList/newform.aspx,而编辑表单将位于EditForm.aspx。浏览到要插入javascript代码的一页或多页,然后在站点操作下,单击编辑页。添加一个Content Editor Web部件,然后将该javascript直接插入到该内容编辑器web部件的HTML中,或者添加一个指向包含该javascript的HTML文件的链接。
至于将附件标记为强制附件,您可能只需要在表单中包含一些文字,以指示用户单击Attach File按钮。也许可以像这样在表单表的底部添加一行
<script type="text/javascript">
function addRow() {
var required = document.createTextNode("*");
var table = document.getElementsByClassName("ms-formtable")[0];
var tbody = table.getElementsByTagName("tbody")[0];
var tr = document.createElement("tr");
var td1 = document.createElement("td");
td1.setAttribute("class","ms-formlabel");
td1.setAttribute("vAlign","top");
var h31 = document.createElement("h3");
h31.setAttribute("class","ms-standardheader");
var text1 = document.createTextNode("Attachment");
h31.appendChild(text1);
var span1 = document.createElement("span")
span1.setAttribute("class","ms-formvalidation");
span1.setAttribute("title","This is a required field");
span1.appendChild(required);
h31.appendChild(span1);
var td1.appendChild(h31);
var tr.appendChild(td1);
var td2 = document.createElement("td");
td2.setAttribute("class","ms-formbody");
td2.setAttribute("vAlign","top");
var text2 = document.createTextNode("Click the Attach File button in the ribbon to add an attachment");
var td2.appendChild(text2);
var tr.appendChild(td2);
var tbody.appendChild(tr);
}
</script>这是相当丑陋的,可以用jQuery简化。
<script type="text/javascript">
function addRow() {
var h3 = $('<h3 class="ms-standardheader">Attachment</h3>').append('<span class="ms-formvalidation">*</span>');
var td1 = $("<td></td>").append(h3);
var td2 = $("<td>Click the Attach File button in the ribbon to add an attachment</td>");
var tr = $("<tr></tr>").append(td1);
$(tr).append(td2);
$(".ms-formtable").first().find("tbody").first().append(tr);
}
</script>请记住,这是未经测试的,可能有一些bug。
https://stackoverflow.com/questions/28611414
复制相似问题