0
私は、JavaScriptを使用してフォームをキャプチャして送信するSharePoint 2013でフォームを作成しています。ほとんどの場合、すべてが機能します。しかしClientPeoplePickerでは、値を取得すると、「名前または電子メールの入力」行と自分の値が返されます。私はそれがそのように動作しないように感じるので、解析するのに十分な、しかし、まだ迷惑な。Sharepoint 2013 Javascript ClientPeoplePickerデフォルト値テキスト
悲しいことに、 "ClientPeoplePicker"がレンダリングされたコードIDに表示されないので、私は他の誰かのオンラインでの価値が得られません。なぜ私は考えていない。だから私はタイトルだけでそれを取得することを余儀なくされています。
function formatUserArrayForSharePoint(selector) {
var users = [];
$.each(selector, function (i, v) {
var html = $.parseHTML(v.outerHTML);
var username = '';
if ($(html[0]).text().indexOf('Enter a name') !== -1)
username = $(html[0]).text(0.substring(32, $(html[0]).text().length - 1);
else username = $(html[0]).text();
users.push(SP.FieldUserValue.fromUser(username));
});
return users;
}
//fill the variable to add to list
field1 = formatUserArrayForSharePoint($("div[title='ascpp']));
oListItem.set_item('field1', field1);
//etc
<SharePoint:ClientPeoplePicker
AllowMultipleEntities="false"
runat="server" Title="ascpp"
ID="field1" AllowEmailAddresses="True" />
私は前にも言ったように私のコードをレンダリングするときに、他の例があるように、IDのないフォーマットはありません。他の人が使用しているものの
例:私のレンダリングコードの
var pickerDiv = $("[id$='ClientPeoplePicker'][title='" + dispTitle + "']");
例(全体ではないもの):
<div id="ct100_PlaceHolderMain_field1_TopSpan" class="sp-peoplepicker-topLevel" title="ascpp" spclientpeoplepicker="true">
<!-- other stuff that is too much to type -->
</div>
これは私がしばらく使っていたjs関数です。試しに 'function SetPeoplePickerValue(fieldName、userAccountName){ var peoplePickerDiv = jQuery(" [spclientpeoplepicker = 'true'] [title = '"+ fieldName + ']」); var peoplePickerEditor = peoplePickerDiv.find( "[title = '" + fieldName + "']"); var spPeoplePicker = SPClientPeoplePicker.SPClientPeoplePickerDict [peoplePickerDiv [0] .id]; peoplePickerEditor.val(userAccountName); spPeoplePicker.AddUnresolvedUserFromEditor(true); }; ' – Shawn