当我需要一些帮助时,我有一个任务.我想要完成的是以下..
>在SharePoint中隐藏newform,editform和dispform上的某些字段(2013)
>我试图隐藏的字段只是输入/文本框字段而不是与其关联的整个列/标题.基本上我有一个带有标题和相关文本框(单行文本)的表单,我想要做的只是隐藏文本框.
我使用F12 IE工具选择显示以下源代码的文本框:
<input title="Travel" class="ms-long ms-spellcheck-true" id="Travel_f6801fb9-c4ff-4109-acb9-f7dd63c1d98a_$TextField" type="text" maxlength="255" value="">
(文本框与我的“旅行”专栏相关联)
现在,当我选择这个时使用F12工具时,我在“内联样式”顶部标题下添加了一些css(我可以告诉),这是“display = none”和bingo它的工作原理!
现在我不能做的就是永久地将它添加到表单中.我试图通过在表单中添加内容Web部件并尝试一些CSS / Java脚本来谷歌这一点,但我根本没有这方面的技能..这有意义吗?
任何帮助都会很棒
干杯!
最佳答案 在SharePoint 2013中引入了客户端呈现(又称CSR),用于呈现列表视图,列表表单和搜索结果.有关详细信息,请参阅
SharePoint 2013 Client Side Rendering: List Forms文章.
以下JavaScript模板演示了如何在“列表表单”页面中隐藏字段控件:
SP.SOD.executeFunc("clienttemplates.js", "SPClientTemplates", function() {
SPClientTemplates.TemplateManager.RegisterTemplateOverrides({
OnPostRender: hideFieldControls
});
});
function getFieldControlId(field){
return field.Name + '_' + field.Id + '_$' + field.Type + 'Field';
}
function hideFieldControl(field){
var fieldControlId = getFieldControlId(field);
var fieldControl = document.getElementById(fieldControlId);
fieldControl.style.display = "none";
}
function hideFieldControls(ctx){
var fieldNamesToHide = ['JobTitle','WorkPhone']; //<- set field names to hide here
if(fieldNamesToHide.indexOf(ctx.ListSchema.Field[0].Name) > -1) {
hideFieldControl(ctx.ListSchema.Field[0]);
}
}
如何应用更改
>在编辑模式下打开列表表单页面
>在页面上添加脚本编辑器Web部件
>使用括起来插入指定的JavaScript模板
script tag注意:通过fieldNamesToHide变量指定要隐藏的字段名称
>保存页面
结果
图1.原始新表格页面