求助:SharePoint表单下拉选Yes时自动设置Originator Signature为当前用户
没问题,我来帮你搞定这个需求!当用户在SharePoint表单的「Originator Completed」下拉框选择「Yes」时,自动把当前用户的LoginName填入「Originator Signature」文本字段,下面是调整后的完整代码和说明:
<script src="/SiteAssets/jquery-3.2.1.js" type="text/javascript"></script> <script> $(document).ready(function () { // 页面加载时先获取当前用户的LoginName并缓存 let userLoginName = ''; const userid = _spPageContextInfo.userId; // 获取当前用户信息的函数 function GetUserLogin() { const requestUri = _spPageContextInfo.webAbsoluteUrl + "/_api/web/getuserbyid(" + userid + ")"; const requestHeaders = { "accept": "application/json;odata=verbose" }; $.ajax({ url: requestUri, contentType: "application/json;odata=verbose", headers: requestHeaders, success: function(data) { // 提取LoginName(去掉前面的域前缀,比如i:0#.f|membership|) userLoginName = data.d.LoginName.split('|')[1]; }, error: function(error) { alert('获取用户信息失败:' + JSON.stringify(error)); } }); } // 监听下拉框的变化事件 function setupDropdownListener() { // 找到「Originator Completed」下拉框(通过title属性定位) const completedDropdown = $("select[title='Originator Completed']"); completedDropdown.on('change', function() { // 判断当前选中的值是否为"Yes" if ($(this).val() === "Yes") { // 将缓存的LoginName填入签名字段 $("input[title='Originator Signature']").val(userLoginName); } else { // 如果选"No",可以清空签名字段(可选,根据需求调整) $("input[title='Originator Signature']").val(''); } }); } // 初始化:先获取用户信息,再设置监听 GetUserLogin(); setupDropdownListener(); }); </script>
关键逻辑说明:
- 缓存用户信息:页面加载时只请求一次SharePoint用户API,把LoginName存在变量里,避免每次下拉变化都重复请求,提升性能
- 下拉框事件监听:通过
change事件监听「Originator Completed」下拉框的选择变化,当选中「Yes」时才触发填充动作 - 字段定位:通过表单控件的
title属性定位元素,确保和你表单里的字段名称完全匹配(如果字段的title不一样,记得修改代码里的对应值) - 错误处理:优化了错误提示,方便排查问题
注意事项:
- 确认你的SharePoint站点的
/SiteAssets/目录下确实有jquery-3.2.1.js文件,如果路径不对,要改成实际的jQuery文件路径 - 确保表单里的下拉框title是「Originator Completed」,文本字段title是「Originator Signature」,如果名称不同,调整代码里的选择器
- 这段代码适合SharePoint经典体验表单,如果是现代体验表单,可能需要用SPFx或者不同的DOM选择方式
内容的提问来源于stack exchange,提问作者lee mossolle
相关产品推荐
相关产品推荐

