我知道我为时已晚,但只是为了帮助其他人在使用默认人员选择器时遇到同样的问题,我在这里记录了我的代码。要在 PeoplePicker 更改事件上调用我们自己的 JavaScript 函数,我们需要在 PeoplePicker 字段上附加 OnUserResolvedClientScript 事件。
$(document).ready(function(){
SP.SOD.executeFunc("sp.js", "SP.ClientContext", function () {
SP.SOD.registerSod('clienttemplates.js', SP.Utilities.Utility.getLayoutsPageUrl('clienttemplates.js'));
SP.SOD.registerSod('clientforms.js', SP.Utilities.Utility.getLayoutsPageUrl('clientforms.js'));
SP.SOD.registerSod('clientpeoplepicker.js', SP.Utilities.Utility.getLayoutsPageUrl('clientpeoplepicker.js'));
SP.SOD.executeFunc('clientpeoplepicker.js', "SPClientPeoplePicker", function () {
GetPeoplePicker('<Field Name>'); //for required field append the fieldName with 'Required Field' text
});
});
});
function GetPeoplePicker(fieldName) {
var controlName = fieldName;
var peoplePickerDiv = $("[id$='ClientPeoplePicker'][title='" + controlName + "']");
var peoplePickerEditor = peoplePickerDiv.find("[title='" + controlName + "']");
var spPeoplePicker = SPClientPeoplePicker.SPClientPeoplePickerDict[peoplePickerDiv[0].id];
spPeoplePicker.OnUserResolvedClientScript = function (peoplePickerId, selectedUsersInfo) {
console.log('inside OnUserResolvedClientScript:'+ peoplePickerId);
console.log(selectedUsersInfo);
};
var userInfo = GetUserInfo(spPeoplePicker);
}
下面是从 PeoplePicker 字段中获取用户的功能
function GetUserInfo(peoplePicker) {
// Get the people picker object from the page.
var userInfo = [];
if (typeof peoplePicker != 'undefined' && peoplePicker !== null) {
// Get information about all users.
var users = peoplePicker.GetAllUserInfo();
userInfo =users;
for (var i = 0; i < users.length; i++) {
var user = users[i];
//logic for selected users
}
}
return userInfo;
}
快乐编码:)