質問

人ピッカーが完了してユーザーを見つけたときにJS機能を引き起こす方法はありますか?クライアント側開発パターンを使用してSharePoint 2013アプリを開発しています。

あなたの提案をありがとうございます、私は次のようにコントロールにOnUserResolvedClientScriptを追加しようとしましたが、それでも機能していない場合はよくわかりませんか?

// First we need to get the selected user from the person selected in the people picker
$(document).ready(function () {

// Specify the unique ID of the DOM element where the
// picker will render.
initializePeoplePicker('employeePickerSpan');});

// Render and initialize the client-side People Picker.
function initializePeoplePicker(peoplePickerElementId) {
// Create a schema to store picker properties, and set the properties.
var schema = {};
schema['PrincipalAccountType'] = 'User,DL,SecGroup,SPGroup';
schema['SearchPrincipalSource'] = 15;
schema['ResolvePrincipalSource'] = 15;
schema['AllowMultipleValues'] = true;
schema['MaximumEntitySuggestions'] = 50;
schema['OnUserResolvedClientScript'] = 'MyPickerUserResolved';
schema['Width'] = '250px';

// Render and initialize the picker. 
// Pass the ID of the DOM element that contains the picker, an array of initial
// PickerEntity objects to set the picker value, and a schema that defines
// picker properties.
this.SPClientPeoplePicker_InitStandaloneControlWrapper(peoplePickerElementId, null, schema);

}

function MyPickerUserResolved(topElementId,  MyPickerUserResolvedusers) {
// users is set to GetAllUserInfo()
// Get the people picker object from the page.
var employeePicker =    this.SPClientPeoplePicker.SPClientPeoplePickerDict.employeePickerSpan_TopSpan;

// Get information about all employees.
var employees = employeePicker.GetAllUserInfo();
var employeeInfo = '';
for (var i = 0; i < employees.length; i++) {
    var employee = employees[i];
    for (var employeeProperty in employee) {
        employeeInfo += employeeProperty + ':  ' + employee[employeeProperty] + '<br>';
    }
}
$('#employeelineManager').html(employeeInfo);
}
.

役に立ちましたか?

解決

On creation of the ClientPeoplePicker you can set the OnUserResolvedClientScript property to a function like:

function MyPickerUserResolved (topElementId, users) { 
    // users is set to GetAllUserInfo()
} 

他のヒント

You could use some jQuery to identify when the field on the page changes. The DIV for the people picker will have plain text for items not yet checked (i.e. if you typed a name, but didn't hit check names) and a span for each item that it has checked.

Here are some examples of how to monitor a DIV like that: https://stackoverflow.com/questions/4979738/fire-jquery-event-on-div-change

This function work on Internet Explorer for me:

function MyPickerUserResolved (topElementId, users) {                    
  //prevent users == null
  if(users.length != 0){
    var UserManager = users[0].Description;
    alert(UserManager); // show message contains on user position 1;
  }
}
ライセンス: CC-BY-SA帰属
所属していません sharepoint.stackexchange
scroll top