Gewusst wie: Auffüllen von PeoplePicker-Kontrolle?

Ich versuche, Javascript zu verwenden, füllen Sie einen PeoplePicker-Steuerung in Sharepoint 2013:

name="Engineer"
var ppDiv=$("[id$='ClientPeoplePicker'][title='"+name+"']");
console.log(ppDiv.html());
var ppEditor=ppDiv.find("[title='"+name+"']");
var spPP=SPClientPeoplePicker.SpClientPeoplePickerDict[ppDiv[0].id];
ppEditor.val("Abc, Xyz");
spPP.AddUnresolvedUserFromEditor(true);

Zwei Probleme: ppDiv ist noch nicht definiert nach der Zuweisungsanweisung, und SPClientPeoplePicker ist nicht definiert; laut dieser Artikel, es ist definiert durch clientpeoplepicker.js, das ist ein Skript, das geladen werden soll, auf jeder Seite, die eine Personenauswahl.

EDIT:

Änderte ich den code, um:

name="Engineer"
var ppDiv=$("div[title='"+name+"']");
console.log(ppDiv.html());
var ppEditor=ppDiv.find("[title='"+name+"']");
var spPPD=SPClientPeoplePicker.SpClientPeoplePickerDict;
console.log(spPPD[0]);
var spPP=spPPD[ppDiv[0].id];
ppEditor.val("Abc, Xyz");
spPP.AddUnresolvedUserFromEditor(true);

Nun ppDiv definiert ist (wie gezeigt, durch seine HTML-erfolgreich erscheinen in der Konsole), aber es zu Abstürzen auf der Linie var spPPD=SPClientPeoplePicker.SpClientPeoplePickerDict; mit diesem Fehler:

Uncaught ReferenceError: SPClientPeoplePicker is not defined
Könnte es sein, die Verkettung innerhalb der $ () - Aufruf? Versuchen wrapping "[id$='ClientPeoplePicker'][Titel='"+name+"']" in Klammern? Es ist schwer zu sagen ohne mehr code.
meinst du, dass dies nicht genug code, um das Problem zu reproduzieren?
Ich meine, es ist schwer zu sagen, was das problem ist ohne mehr code, obwohl ich sicher bin, würde ich eine Fehlermeldung erhalten, kopieren und einfügen von text zur Verfügung gestellt.
richtig, Sie würden zu ändern, die name Wert auf den Titel einer Kontrolle auf Ihrer Seite, und ändern Sie den Wert übergeben ppEditor.val() zu einer der Benutzernamen, die Sie in Ihrer Personenauswahl. Das sollte genug sein, um zu replizieren, wenn Sie fügen Sie diese in ein anderes Skript, das Sie laufen haben, auf Ihrer Seite.
Gut, SPClientPeoplePicker ist definiert, wenn die Seite geladen wurde, aber wohl nicht beim ausführen von code. Alle javascript-Bibliotheken geladen werden, die beim laden der Seite, aber Sie müssen möglicherweise warten, bis es geladen ist. Verwenden Sie einfach ExecuteOrDelayUntilScriptLoaded zu warten, bis es zu laden, wie diese. ExecuteOrDelayUntilScriptLoaded(function () { //run your code here or call a function }, "clientpeoplepicker.js");

InformationsquelleAutor sigil | 2015-12-17

Schreibe einen Kommentar