CSS Part
  1. <style>
  2. .ms-core-pageTitle {
  3. margin-top: 10px;
  4. margin-left: 400px;
  5. }
  6. div#leavefrom {
  7. background: antiquewhite;
  8. width: 800px;
  9. margin-left: 100px;
  10. padding-top: 50px;
  11. }
  12. table#leavefields {
  13. font-size: 15px;
  14. margin-left: 100px;
  15. }
  16. input#id1 {
  17. margin-left: 230px;
  18. margin-bottom: 15px;
  19. font-size: large;
  20. background-color: #e0e2e4;
  21. }
  22. input#btn {
  23. margin-bottom: 16px;
  24. background-color: #e0e2e4;
  25. }
  26. </style>
Js File
  1. var user = [];
  2. function GetUserId() {
  3. if (validate()) {
  4. $("div[class*='sp-peoplepicker-topLevel']").each(function() {
  5. if ($(this).find("span[class='ms-entity-resolved']").text().length > 0) {
  6. var endPointURLToGetUseID = _spPageContextInfo.webAbsoluteUrl + "/_api/web/siteusers?$select=Title,ID&$filter=Title eq '" + $(this).find("span[class='ms-entity-resolved']").text() + "'";
  7. $.ajax({
  8. url: endPointURLToGetUseID,
  9. type: "GET",
  10. dataType: "json",
  11. async: false,
  12. headers: {
  13. "accept": "application/json;odata=verbose"
  14. },
  15. success: callSuccessMethod,
  16. error: callFailureMethod
  17. });
  18. }
  19. });
  20. function callSuccessMethod(data, request) {
  21. $.each(data.d.results, function(key, val) {
  22. var GetId = val.Id;
  23. user.push([GetId]);
  24. });
  25. }
  26. function callFailureMethod(data, errCode, errMessage) {
  27. alert("Error: " + errMessage);
  28. }
  29. CreateListItem();
  30. }
  31. }
  32. function CreateListItem() {
  33. var clientContext = new SP.ClientContext('https://your site Url');
  34. var List = clientContext.get_web().get_lists().getByTitle('dynamiclist');
  35. var itemCreateInfo = new SP.ListItemCreationInformation();
  36. this.ListItem = List.addItem(itemCreateInfo);
  37. var Ename = document.getElementById("empname").value;
  38. var EmpID = document.getElementById("empid").value;
  39. var user1;
  40. ListItem.set_item('Employeename', Ename);
  41. ListItem.set_item('Empid', EmpID);
  42. if (user.length == 4) {
  43. ListItem.set_item('Approver1', user[1][0]);
  44. ListItem.set_item('Approver2', user[1][0]);
  45. ListItem.set_item('Approver3', user[2][0]);
  46. ListItem.set_item('Approver4', user[3][0]);
  47. ListItem.update();
  48. } else if (user.length == 3) {
  49. ListItem.set_item('Approver1', user[0][0]);
  50. ListItem.set_item('Approver2', user[1][0]);
  51. ListItem.set_item('Approver3', user[2][0]);
  52. ListItem.set_item('Approver4', user1)
  53. ListItem.update();
  54. } else if (user.length == 2) {
  55. ListItem.set_item('Approver1', user[0][0]);
  56. ListItem.set_item('Approver2', user[1][0]);
  57. ListItem.set_item('Approver3', user1);
  58. ListItem.set_item('Approver4', user1)
  59. ListItem.update();
  60. } else if (user.length == 1) {
  61. ListItem.set_item('Approver1', user[0][0]);
  62. ListItem.set_item('Approver2', user1);
  63. ListItem.set_item('Approver3', user1);
  64. ListItem.set_item('Approver4', user1)
  65. ListItem.update();
  66. } else if (user.length == 0) {
  67. ListItem.set_item('Approver1', user1);
  68. ListItem.set_item('Approver2', user1);
  69. ListItem.set_item('Approver3', user1);
  70. ListItem.set_item('Approver4', user1)
  71. ListItem.update();
  72. }
  73. clientContext.load(ListItem);
  74. clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
  75. }
  76. function onQuerySucceeded() {
  77. alert('Leave Applied Suceessfully');
  78. }
  79. function onQueryFailed(sender, args) {
  80. alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
  81. }
  82. function validate() {
  83. var returnval = true;
  84. if (document.getElementById("empname").value == "") {
  85. alert("Please enter the Employee ID");
  86. returnval = false;
  87. } else if (document.getElementById("empid").value == "") {
  88. alert("Please enter the Department.");
  89. returnval = false;
  90. } else if (document.getElementById("txtlev").value == 0) {
  91. alert("Please Specify level of approval");
  92. returnval = false;
  93. } else if (document.getElementById("peoplePickerDiv1_TopSpan_HiddenInput").value == "" || document.getElementById("peoplePickerDiv1_TopSpan_HiddenInput").value == "[]") {
  94. alert("Please Specify Approver1");
  95. returnval = false;
  96. } else if (document.getElementById("txtlev").value == 2 && document.getElementById("peoplePickerDiv2_TopSpan_HiddenInput").value == "" || document.getElementById("peoplePickerDiv2_TopSpan_HiddenInput").value == "[]") {
  97. alert("Please Specify Approver2");
  98. returnval = false;
  99. } else if (document.getElementById("txtlev").value == 3 && document.getElementById("peoplePickerDiv3_TopSpan_HiddenInput").value == "" || document.getElementById("peoplePickerDiv3_TopSpan_HiddenInput").value == "[]") {
  100. alert("Please Specify Approver3");
  101. returnval = false;
  102. } else if (document.getElementById("txtlev").value == 4 && document.getElementById("peoplePickerDiv4_TopSpan_HiddenInput").value == "" || document.getElementById("peoplePickerDiv4_TopSpan_HiddenInput").value == "[]") {
  103. alert("Please Specify Approver4");
  104. returnval = false;
  105. }
  106. return returnval;
  107. }
Html File
  1. <html>
  2. <head>
  3. <script src="https://code.jquery.com/jquery-1.8.3.js"></script>
  4. <script src="https://code.jquery.com/ui/1.10.0/jquery-ui.js"></script>
  5. <script type="text/javascript" src="_layouts/15/sp.runtime.js"></script>
  6. <script type="text/javascript" src="_layouts/15/sp.js"></script>
  7. <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
  8. <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.SPServices/2014.02/jquery.SPServices-2014.02.min.js" type="text/javascript"></script>
  9. <script src='UR Url/SiteAssets/Holiday/moment.js'></script>
  10. <script src="UR url/sppeoplepicker.min.js"></script>
  11. <script src="Ur url/sppeoplepicker.js"></script>
  12. <script src="JS File Mentioned Above/dynamic.js"></script>
  13. <script type="text/javascript">
  14. $(document).ready(function() {
  15. $("#peoplePickerDiv1").spPeoplePicker();
  16. $("#peoplePickerDiv2").spPeoplePicker();
  17. $("#peoplePickerDiv3").spPeoplePicker();
  18. $("#peoplePickerDiv4").spPeoplePicker();
  19. });
  20. </script>
  21. <script type="text/javascript">
  22. function jsFunction(value) {
  23. var returnval = true;
  24. if (document.getElementById("txtlev").value == 0) {
  25. $('tr[id="approver1"]').hide();
  26. $('tr[id="approver2"]').hide();
  27. $('tr[id="approver3"]').hide();
  28. $('tr[id="approver4"]').hide();
  29. returnval = false;
  30. } else if (document.getElementById("txtlev").value == 1) {
  31. $('tr[id="approver1"]').show();
  32. $('tr[id="approver2"]').hide();
  33. $('tr[id="approver3"]').hide();
  34. $('tr[id="approver4"]').hide();
  35. returnval = false;
  36. } else if (document.getElementById("txtlev").value == 2) {
  37. $('tr[id="approver2"]').show();
  38. $('tr[id="approver1"]').show();
  39. $('tr[id="approver3"]').hide();
  40. $('tr[id="approver4"]').hide();
  41. returnval = false;
  42. } else if (document.getElementById("txtlev").value == 3) {
  43. $('tr[id="approver3"]').show();
  44. $('tr[id="approver1"]').show();
  45. $('tr[id="approver2"]').show();
  46. $('tr[id="approver4"]').hide();
  47. returnval = false;
  48. } else if (document.getElementById("txtlev").value == 4) {
  49. $('tr[id="approver4"]').show();
  50. $('tr[id="approver1"]').show();
  51. $('tr[id="approver2"]').show();
  52. $('tr[id="approver3"]').show();
  53. returnval = false;
  54. }
  55. return returnval;
  56. }
  57. </script>
  58. <script type="text/javascript" src="JS File Mentioned above/dynamic.js"></script>
  59. </head>
  60. <body>
  61. <div id="leavefrom">
  62. <table id="leavefields">
  63. <tr>
  64. <td>Level of approval</td>
  65. <td> <select id="txtlev" style="width: 99%; height: 90%" onmousedown="this.value='';" onchange="jsFunction(this.value);">
  66. <option value=0>Select</option>
  67. <option value=1>1</option>
  68. <option value=2>2</option>
  69. <option value=3>3</option>
  70. <option value=4>4</option>
  71. </select></td>
  72. </tr>
  73. <tr>
  74. <td width="3" nowrap>Employee Name </td>
  75. <td> <input type="text" id="empname"></td>
  76. </tr>
  77. <tr>
  78. <td>Employee id</td>
  79. <td><input type="text" id="empid"></td>
  80. </tr>
  81. <tr id="approver1" style="display:none">
  82. <td>Approver1</td>
  83. <td>
  84. <div id="peoplePickerDiv1"></div>
  85. </td>
  86. </tr>
  87. <tr id="approver2" style="display:none">
  88. <td>Approver2</td>
  89. <td>
  90. <div id="peoplePickerDiv2"></div>
  91. </td>
  92. </tr>
  93. <tr id="approver3" style="display:none">
  94. <td>Approver3</td>
  95. <td>
  96. <div id="peoplePickerDiv3"></div>
  97. </td>
  98. </tr>
  99. <tr id="approver4" style="display:none">
  100. <td>Approver4</td>
  101. <td>
  102. <div id="peoplePickerDiv4"></div>
  103. </td>
  104. </tr>
  105. <tr>
  106. <td><input type='button' id='id1' value='Submit' onclick="GetUserId();" /></td>
  107. <td><input type='button' value='Cancel' id='btn' onclick="cancel();" /></td>
  108. </tr>
  109. </table>
  110. </div>
  111. </body>
  112. </html>
Here, I am using Dynamic list as My list.
Employeename, Empid, Approver1, Approver2, Approver3, Approver4 are the field columns of that List.
Step 1
In HTML file.
Include jquery-1.8.3.js,
ui/1.10.0/jquery-ui.js,
http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js ,
moment.js ,
sppeoplepicker.min.js ,
sppeoplepicker.js
And also, store the above JS file as .js format and include in HTML.
Step 2
In Document.ready function, intialise all the people pickers. For example -
$("#peoplePickerDiv1").spPeoplePicker();
Step 3
Based on the option values, I am hiding and showing textbox
  1. if(document.getElementById("txtlev").value==0)
  2. $('tr[id="approver1"]').hide();
  3. $('tr[id="approver1"]').show();
Create necessary Div tag and buttons to append people picker as shown in the above HTML file.
Step 4

In JS part
For Loop for all Divs
  1. $("div[class*='sp-peoplepicker-topLevel']").each(function()
It checks whether the Div box is empty or not..
  1. if($(this).find("span[class='ms-entity-resolved']").text().length>0
Step 5
Based on the div value, the below code retrieves the Id of Users(people picker) Eg : SpTestuser1, the id is 10
  1. var endPointURLToGetUseID =_spPageContextInfo.webAbsoluteUrl+"/_api/web/siteusers?$select=Title,ID&$filter=Title eq '"+$(this).find("span[class='ms-entity-resolved']").text()+"'";
Step 6
  1. function callSuccessMethod(data, request) {
  2. $.each(data.d.results, function(key, val) {
  3. var GetId = val.Id;
  4. user.push([GetId]);
  5. });
Based on results of Val.id, we push the values of GetId into some variable user array I created (Push Function acts by using moment.js)
Step 7
Update the values in the List using below code.
  1. ListItem.set_item('Employeename', Ename);
  2. ListItem.set_item('Empid', EmpID);
  3. if (user.length == 4) {
  4. ListItem.set_item('Approver1', user[1][0]);
  5. ListItem.set_item('Approver2', user[1][0]);
  6. ListItem.set_item('Approver3', user[2][0]);
  7. ListItem.set_item('Approver4', user[3][0]);
  8. ListItem.update();
  9. }
Step 8
The below code is used for validation...
  1. if (document.getElementById("txtlev").value == 2 && document.getElementById("peoplePickerDiv2_TopSpan_HiddenInput").value == "" || document.getElementById("peoplePickerDiv2_TopSpan_HiddenInput").value == "[]") {
  2. alert("Please Specify Approver2");
  3. returnval = false;
  4. }