Tuesday, January 8, 2013

Make SharePoint Column read-only javascript

<script type="text/javascript">
function getTagFromTagNameAndTitle(tagName, title) {
  var tags = document.getElementsByTagName(tagName);
  for (var i=0; i < tags.length; i++) {
    var tempString = tags[i].id;
    if (tags[i].title == title) {
      return tags[i];
    }
  }
  return null;
}
function GetParentByTagName(parentTagName, childElementObj)
{
var parent = childElementObj.parentNode;
while(parent.tagName.toLowerCase() != parentTagName.toLowerCase())
{
parent = parent.parentNode;
}
return parent;
}
function GetFieldRow(fieldLabel)
{
var nobrs = document.getElementsByTagName("nobr");
var strValue ='';
for(var i=0; i < nobrs.length ; i++)
{
  strValue = nobrs[i].innerText;
  strValue = strValue.substring(0,strValue.length-2);
  if (strValue == fieldLabel)
  {
    var tr = GetParentByTagName("TR", nobrs[i]);
    return tr;
  }
}
}
var ctrl = getTagFromTagNameAndTitle('input','Name of the column you want to make Read Only');
ctrl .disabled  = true;
_spBodyOnLoadFunctionNames.push("StartUpCustomScript");
function StartUpCustomScript()
{
        ChangeOkButtonOnclickEvent("Input","SaveItem");
}
function ChangeOkButtonOnclickEvent(tagName, identifier)
{
    var len = identifier.length;
    /*find all Input type controls on page (ie. control with tag <Input/>)*/
    var tags = document.getElementsByTagName(tagName);
    for (var i=0; i < tags.length; i++)
     {
        var tempString = tags[i].name;     
        /*find any Input type controls on page has its name ending with 'SaveItem'*/      
        if(tempString.indexOf(identifier) == tempString.length-len )
        { 
           /*if found, replace it default onclick with our custom script*/
           var func = tags[i].attributes["onclick"].value.replace("if (!PreSaveItem())",                  
         
          "var ctrl = getTagFromTagNameAndTitle('input',' Name of the column you want to make Read Only ');"+
          "ctrl .disabled  = false;"+
                     "if (!PreSaveItem())");

           /*remove its default onclick event*/
           tags[i].onclick = null;
           /*re-register its onlick event with new script*/
           tags[i].attachEvent("onclick",new Function(func));
        }
    }
    return null;
}

</script>

No comments:

Post a Comment