只是背景: (与问题无关)
我正在使用SharePoint并创建一个SharePoint托管应用程序。
我有一些字段,它提供了一个可以从用户池中选择用户的peoplepicker。这个功能是由SharePoint内部脚本提供的。
如果我通过jquery输入一个用户名,什么也不会发生。我猜它没有内置的更改处理程序。
我所做的是一个单独的脚本,它只是通过trigger("change")
解析我的jquery输入的用户名,然后SharePoint内部脚本做的工作。这个"作业"是异步的,然后如果数据从后端到达,SharePoint脚本将数据应用到Peoplepicker字段。
但是这个函数也不支持jQuery的触发器,因为我不能改变函数,因为它们是预定义的
我想做的是监视Peoplepicker字段中的文本何时被更改但我现在有点迷失了
问题:
我用下面的代码试过了(不工作):
$('.peoplePickerDiv').bind("DOMSubtreeModified", function () {
alert("HAS BEEN CHANGED!");
});
是否有另一种方式来反应,让说背景编辑输入字段在我的DOM?
对于People 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');
};
引用
在SharePoint托管的SharePoint插件中使用客户端People Picker控件