Hello Everyone!

Welcome to a new important article for all developers of which we will hide the form fields based on their permission we require.

So suppose I have a form with 10 fields and I want a few of them to be only visible to certain users. So what will I do?

Let's hit the topic.

  • First create a group and keep all users you want to have access to all fields in a form in that group.
  • Other users who have access to the form but no access to those special fields can be added anywhere in the site to any permission level.
  • Now in that form add the following JavaScript code in new, edit as well as a view item.
  • For me I have hidden the Status, Any comments, reviewed By and Response fields for general users.
  • Now what I am doing is, I am calling sp services to check whether the logged in user is one among my "Request Team" group.
  • If he is not he will not be able to view edit or create the preceding fields.
  • But if he is one among the users in the group he will be able to see all other fields since he has special rights to see them.

Code

  1. <script type="text/javascript">
  2. $(document).ready(function () {
  3. $("Select[title$='Status']").closest('tr').hide();
  4. $("textarea[title$='Any Comments']").parent('span').parent('td').parent('tr').hide();
  5. $("Select[title$='Reviewed By']").closest('tr').hide();
  6. $("[title$='Response']").closest('tr').hide();
  7. $().SPServices({
  8. operation: "GetGroupCollectionFromUser",
  9. userLoginName: $().SPServices.SPGetCurrentUser(),
  10. async: false,
  11. completefunc: function (xData, Status) {
  12. if (($(xData.responseXML).find("Group[Name='Request Team']").length == 1)) {
  13. $("Select[title$='Status']").closest('tr').show();
  14. $("textarea[title$='Any Comments']").parent('span').parent('td').parent('tr').show();
  15. $("Select[title$='Reviewed By']").closest('tr').show();
  16. $("[title$='Response']").closest('tr').show();
  17. }
  18. }
  19. });
  20. });
  21. </script>

Don't you think it is a neat job rather than working on Infopath forms and setting up the rules?

Keep learning.

Cheers.