首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在sharepoint显示模板中执行JS

在sharepoint显示模板中执行JS
EN

Stack Overflow用户
提问于 2015-02-20 00:20:22
回答 1查看 808关注 0票数 0

在我的sharepoint列表中,我正在处理应该具有附件的项目。我自定义了模板,以便它允许我添加附件,但我看不到将附件标记为必填的可能性。我设法用脚本检查了附件

代码语言:javascript
运行
复制
<script type="text/javascript" language="javascript">
            function PreSaveAction() 
            {
                        var elm = document.getElementById(&quot;idAttachmentsTable&quot;);
                        if (elm == null || elm.rows.length == 0)
                        {
                            document.getElementById(&quot;idAttachmentsRow&quot;).style.display=&apos;none&apos;;
                            alert(&quot;Please attach Documents&quot;);
                            return false ;
                        }
                        else { return true ;}
            }
</script>

但我只能在自定义表单(不是模板)中使用它。由于模板用于与列表的几乎所有交互,所以我想使用它,并希望在模板加载后执行js代码。该模板在标记<ZoneTemplate></ZoneTemplate>之间引用。表单中有更多的代码,但是sharepoint-designer不允许我编辑这两个标签之间的任何东西。

这真的很令人沮丧,因为我似乎遗漏了一个显而易见的观点。希望我提供了足够的信息,因为我不习惯与sharepoint和他们的表单和模板的工作…

EN

回答 1

Stack Overflow用户

发布于 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按钮。也许可以像这样在表单表的底部添加一行

代码语言:javascript
运行
复制
<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简化。

代码语言:javascript
运行
复制
<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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28611414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档