Собственное решение
Собственное решение для получения пользователей и их данных из User field единичного или множественного типа
//Получаем данные пользователей из поля выбора пользователя (единичный и множественный выбор)
function GetPeoplePickerUsersData(divID)
{
var result = {};
var $ppDIV = $("div[id='"+ divID +"']");
var $ppEntities = $ppDIV.find("#divEntityData");
$ppEntities.each(function()
{
//Отображаемое имя
var displayName = $(this).attr("displaytext");
result["DisplayName"] = displayName;
//Найденное
var isResolved = $(this).attr("isresolved");
result["Resolved"] = isResolved;
//Для каждого найденного пользователя получаем XML с его данными
var entityXML = $(this).find("div").attr("data");
var xmlDoc = $.parseXML(entityXML);
$(xmlDoc).find("DictionaryEntry").each(function () {
var key = $(this).find("Key").text();
var value = $(this).find("Value").text();
result[key] = value;
})
});
return result;
}
обращение к функции
//Получаем руководителя
var mngData = GetPeoplePickerUsersData("ctl00_ctl50_g_e4ccc992_8553_4a5e_8700_60e9eba33a9b_ff921_ctl00_ctl00_UserField_upLevelDiv");
console.log(mngData.DisplayName);
DisplayName: "Коргуль Татьяна Б."
Resolved: "True"
PrincipalType: "User"
Title: "Руководитель филиала"
Email: "t.korgul@ural.pac.ru"
SPUserID: "107"
AccountName: "i:0#.w|pac\ekb1"
SIPAddress: "smtp:mrk@chel.pac.ru"
Department: "Екатеринбургский филиал"
Получаем из DispForm (множественный выбор)
var sField2 = $('.ms-standardheader:contains("Участники")').parent('td').next('td').find('.ms-peopleux-userdisplink').text();
Нативное решение
Подключаем скрипт
<!-- для работы с PeoplePicker -->
<script src="../_layouts/15/clientpeoplepicker.js"></script>
Добавить пользователя в поле (что бы добавлять пользователей вызывать для каждого пользователя)
//Set PeoplePicker users (что бы добавлять пользователей вызывать для каждого пользователя)
function SetAndResolvePeoplePicker(fieldName, userAccountName) {
var controlName = fieldName;
var peoplePickerDiv = $("[id$='ClientPeoplePicker'][title='" + controlName + "']");
var peoplePickerEditor = peoplePickerDiv.find("[title='" + controlName + "']");
var spPeoplePicker = SPClientPeoplePicker.SPClientPeoplePickerDict[peoplePickerDiv[0].id];
peoplePickerEditor.val(userAccountName);
spPeoplePicker.AddUnresolvedUserFromEditor(true);
// Или последние 2 строки меняем на
//spPeoplePicker.AddUserKeys(userAccountName);
}
//Вызов
SetAndResolvePeoplePicker("Администраторы до согласования", val);
Очистить поле
//Clear People Picker
function ClearPeoplePicker(fieldName) {
var controlName = fieldName;
var peoplePickerDiv = $("[id$='ClientPeoplePicker'][title='" + controlName + "']");
var peoplePickerEditor = peoplePickerDiv.find("[title='" + controlName + "']");
var spPeoplePicker = SPClientPeoplePicker.SPClientPeoplePickerDict[peoplePickerDiv[0].id];
var usersobject = spPeoplePicker.GetAllUserInfo();
usersobject.forEach(function (index) {
spPeoplePicker.DeleteProcessedUser(usersobject[index]);
});
}
Получить информацию о пользователе из поля PeoplePicker
//Получить информацию о пользователе из поля PeoplePicker
function getInfoFromPeoplePicker(title)
{
var controlName = title;
var peoplePickerDiv = $("[id$='ClientPeoplePicker'][title='" + controlName + "']");
var peoplePickerEditor = peoplePickerDiv.find("[title='" + controlName + "']");
var spPeoplePicker = SPClientPeoplePicker.SPClientPeoplePickerDict[peoplePickerDiv[0].id];
var userList = spPeoplePicker.GetAllUserInfo();
var userInfo = userList[0];
//The description field contains the login info without the lookup extras. In new forms this
//field can be undefined depending on the field being checked. Only check if userInfo is
//initialized.
if(userInfo != null)
{
userEmail = userInfo.EntityData.Email;
}
return userInfo;
}
Получить имена пользователей в EditForm
//Получить имена пользователей в EditForm
function getUsersFromPeoplePicker(title) {
var controlName = title;
var peoplePickerDiv = $("[id$='ClientPeoplePicker'][title='" + controlName + "']");
var peoplePickerEditor = peoplePickerDiv.find("[title='" + controlName + "']");
var spPeoplePicker = SPClientPeoplePicker.SPClientPeoplePickerDict[peoplePickerDiv[0].id];
var userList = spPeoplePicker.GetAllUserInfo();
var userNames = "";
$(userList).each(function(i) {
console.log(userList[i].DisplayText);
userNames += userList[i].DisplayText;
});
return userNames;
}
Отключение PeoplePicker
//Отключение PeoplePicker
function disablePeoplePicker(title) {
var controlName = title;
var peoplePickerDiv = $("[id$='ClientPeoplePicker'][title='" + controlName + "']");
var peoplePickerEditor = peoplePickerDiv.find("[title='" + controlName + "']");
var spPeoplePicker = SPClientPeoplePicker.SPClientPeoplePickerDict[peoplePickerDiv[0].id];
spPeoplePicker.SetEnabledState(false);
$(peoplePickerDiv).find('.sp-peoplepicker-delImage').hide();
}
disablePeoplePicker("Участники");
Если возникают ошибки, значит не успевает подгрузиться sp.js тогда в функции
$(document).ready(function()
{
ExecuteOrDelayUntilScriptLoaded(CustomAction, "sp.js");
function CustomAction()
{
//Your Code
}
});