Ant*_*ony 6 c# sharepoint jquery peoplepicker
当人们选择器从弹出的浏览窗口将值返回到主窗体时,是否有人试图尝试触发jquery更改事件?我在jquery语句中尝试了几个标签,但似乎没有任何效果.(SP 2010)
<wssawc:PeopleEditor AllowEmpty="false" AcceptAnyEmailAddresses="true" ValidateResolvedEntity="true"
ShowButtons="true" ShowDataValidationErrorBorder="true" ShowEntityDisplayTextInTextBox="true"
ShowErrorPlaceHolder="true" ValidatorEnabled="true" MultiSelect="false" ID="primaryOwnerPicker"
runat="server" SelectionSet="User" Width="12em" AllowTypeIn="false" DoPostBackOnResolve="false"
EnableBrowse="true" ForceClaims="true" Title="Primary Owner People Picker" />
Run Code Online (Sandbox Code Playgroud)
我试过了
$("textarea[title='Primary Owner People Picker']").change(function ()
{
alert("here");
});
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激...
Ath*_*way 14
您没有指定SharePoint的版本,但以下说明适用于SharePoint 2007,并且未在2010年确认.
可以通过单击"检查名称"图标或"浏览"图标来设置人员选取器的值.
如果单击作为锚标记的"检查名称"图标,则onclick事件将调用"WebForm_DoCallback",它将异步向SharePoint服务器发出HTTP请求,以验证输入到人员选择器中的名称.
以下是WebForm_DoCallback签名:
function WebForm_DoCallback(eventTarget,
eventArgument,
eventCallback,
context,
errorCallback,
useAsync){
...
}
Run Code Online (Sandbox Code Playgroud)
您最感兴趣的WebForm_DoCallbacks参数之一是'eventTarget',即人员选择器文本区域.您还会对'eventCallback'感兴趣,因为它是异步HTTP请求返回后调用的回调方法.在这种情况下,它是在核心js中定义的'EntityEditorHandleCheckNameResult(result,ctx)'.
以下是EntityEditorHandleCheckNameResult函数的定义
function EntityEditorHandleCheckNameResult(result, ctx)
{
EntityEditorClearWaitCursor(ctx);
EntityEditorCallback(result, ctx);
}
Run Code Online (Sandbox Code Playgroud)
请注意,它将事件处理委托给EntityEditorCallback方法.如果单击"浏览"图标,也会出现这种情况,该图标会打开一个对话框供您查找和选择用户."浏览"图标显然利用了不同的调用堆栈,但由于它们都依赖于EntityEditorCallback,因此当您单击"检查名称"或"浏览"时,我将专注于此方法.
要在调用EntityEditorCallback之后执行代码,可以使用以下代码:
var invokeAfterEntityEditorCallback = function(func) {
var old__EntityEditorCallback = EntityEditorCallback;
if (typeof EntityEditorCallback != 'function') {
EntityEditorCallback = func;
} else {
EntityEditorCallback = function(result, ctx) {
old__EntityEditorCallback(result, ctx);
func(result, ctx);
}
}
};
Run Code Online (Sandbox Code Playgroud)
以下是一个自定义人员选择器事件处理程序,它会提醒结果和人员选取器文本区域的ID:
function onPeoplePickerFieldSet(result, ctx){
alert(result);
alert(ctx);
}
Run Code Online (Sandbox Code Playgroud)
以下是允许在从浏览对话框中选中或选择人员选择器名称后调用onPeoplePickerFieldSet方法的逻辑.此外,如果您使用的是jQuery,则可以在document.ready事件处理程序中调用此语句.
invokeAfterEntityEditorCallback(onPeoplePickerFieldSet);
Run Code Online (Sandbox Code Playgroud)
onPeoplePickerFieldSet方法的'result'参数是一个XML结果,表示成功验证以及域quailified用户名.以下XML是单击"检查名称"图标得到的示例:
<Entities Append="False" Error="" Separator=";" MaxHeight="3">
<Entity Key="HOLLOWAY\csteel" DisplayText="Craig Steel" IsResolved="True" Description="HOLLOWAY\csteel">
<ExtraData>
<ArrayOfDictionaryEntry xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<DictionaryEntry>
<Key xsi:type="xsd:string">DisplayName</Key>
<Value xsi:type="xsd:string">Craig Steel</Value>
</DictionaryEntry>
<DictionaryEntry>
<Key xsi:type="xsd:string">Email</Key>
<Value xsi:type="xsd:string">csteel@holloway.net</Value>
</DictionaryEntry>
<DictionaryEntry>
<Key xsi:type="xsd:string">SPUserID</Key>
<Value xsi:type="xsd:string">16</Value>
</DictionaryEntry>
<DictionaryEntry>
<Key xsi:type="xsd:string">PrincipalType</Key>
<Value xsi:type="xsd:string">User</Value>
</DictionaryEntry>
</ArrayOfDictionaryEntry>
</ExtraData>
<MultipleMatches />
</Entity>
</Entities>
Run Code Online (Sandbox Code Playgroud)
'ctx'参数是人员选取器文本区域的ID,可以在jQuery选择器语句中使用.
而已!
归档时间: |
|
查看次数: |
13799 次 |
最近记录: |