只是背景: (与问题无关)
我正在使用SharePoint并创建一个Sharepoint托管应用程序。
我有一些字段提供了一个peoplepicker,我可以从用户池中选择用户。功能实现由SharePoint内部脚本提供。
如果我通过jquery输入用户名,则没有任何反应。我猜它没有内置的更改处理程序。
我所做的是一个分离脚本,它只通过trigger("change")
解析我的jquery输入上的用户名,然后执行这项工作的SharePoint内部脚本。这个"工作"是异步的,然后如果数据从后端到达,则SharePoint脚本会将数据应用于Peoplepicker字段。
但是这个功能也不支持jQuery的触发器,因为我不能改变它们预先定义的功能......
所以我想要做的是监视Peoplepicker字段中的文本何时被更改但我现在有点迷失。
问题:
我已经尝试使用以下代码(它不起作用):
$('.peoplePickerDiv').bind("DOMSubtreeModified", function () {
alert("HAS BEEN CHANGED!");
});
还有另一种方法可以对我的DOM中的输入字段进行背景编辑吗?
答案 0 :(得分:1)
For Picker控制操作SPClientPeoplePicker object
(clientpeoplepicker.js
)旨在提供从选择器获取信息或执行其他操作的方法。
SPClientPeoplePicker
类公开以下事件:
OnControlValidateClientScript
- 设置或清除服务器错误后触发OnUserResolvedClientScript
- 在客户端OnValueChangedClientScript
- 在文本输入或用户在客户端中更改后触发 OnValueChangedClientScript
事件可能适合您的场景,以下是如何附加它的示例:
var picker = SPClientPeoplePicker.SPClientPeoplePickerDict[peoplePickerId];
picker.OnValueChangedClientScript = function (elementId, userInfo) {
if(userInfo.length > 0){ // once the value is resolved it could be retrieved via `userInfo` object
console.log(userInfo[0]);
}
console.log('value changed');
};
<强>参考强>
Use the client-side People Picker control in SharePoint-hosted SharePoint Add-ins