Hiding fields on NewForm.aspx and EditForm.aspx
First open entry form (NewForm.aspx / EditForm.aspx / DispForm.aspx) in advanced mode in sharepoint designer. Then search for tag :
<asp:Content ContentPlaceHolderId="PlaceHolderAdditionalPageHead" runat="server">
Now copy & paste this JavaScript code after this tag :
<script type="text/ecmascript">
ExecuteOrDelayUntilScriptLoaded(runCode, "sp.js");
function runCode()
{
HideField("Expose to Customer / Partner",true);
HideField("Reported By",true);
HideField("Reported Date",true);
}
// Function To Hide Fields
function HideField(title,hide){
var header_h3=document.getElementsByTagName("h3") ;
for(var i = 0; i <header_h3.length; i++)
{
var el = header_h3[i];
var foundField ;
if(el.className=="ms-standardheader")
{
for(var j=0; j<el.childNodes.length; j++)
{
var mHead=title+"<SPAN class=ms-formvalidation> *</SPAN>";
if(el.childNodes[j].innerHTML == title || el.childNodes[j].nodeValue == title || el.childNodes[j].innerHTML==mHead)
{
var elRow = el.parentNode.parentNode ;
if(hide==true)
{
elRow.style.display = "none"; //and hide the row
}
else
{
elRow.style.display = "visible"; //and show the row
}
foundField = true ;
break;
}
}
}
if(foundField)
break ;
}
}
</script>
<asp:Content ContentPlaceHolderId="PlaceHolderAdditionalPageHead" runat="server">
Now copy & paste this JavaScript code after this tag :
<script type="text/ecmascript">
ExecuteOrDelayUntilScriptLoaded(runCode, "sp.js");
function runCode()
{
HideField("Expose to Customer / Partner",true);
HideField("Reported By",true);
HideField("Reported Date",true);
}
// Function To Hide Fields
function HideField(title,hide){
var header_h3=document.getElementsByTagName("h3") ;
for(var i = 0; i <header_h3.length; i++)
{
var el = header_h3[i];
var foundField ;
if(el.className=="ms-standardheader")
{
for(var j=0; j<el.childNodes.length; j++)
{
var mHead=title+"<SPAN class=ms-formvalidation> *</SPAN>";
if(el.childNodes[j].innerHTML == title || el.childNodes[j].nodeValue == title || el.childNodes[j].innerHTML==mHead)
{
var elRow = el.parentNode.parentNode ;
if(hide==true)
{
elRow.style.display = "none"; //and hide the row
}
else
{
elRow.style.display = "visible"; //and show the row
}
foundField = true ;
break;
}
}
}
if(foundField)
break ;
}
}
</script>
Comments
Great post.
Having hidden all the fields (Workspace, Recurrence and All Day Event, which cannot be hidden using the content definition), I now have quite a large space at the bottom of the new/edit/display forms.
Is there any way of changing form height to compensate for the absence of the fields?
Thanks.
It”s indeed a good post, helped me a lot.
It”s indeed a good post, helped me a lot.
jQuery can target HTML elements in an easier way.