共享点 Online/365 Jquery,设置查找列无效 e.i ($("select[Title='Column']")
sharepoint Online/365 Jquery, Set Lookup Column Not working e.i ($("select[Title='Column']")
我一直在做一些关于 Sharepoint Online/365 的工作,但在尝试设置 NewForm.aspx
中的查找或选择列的值时遇到了困难
将我的问题缩小到无法设置 lookup/Choice 列
我已将我页面上的代码简化为
//Phase being a Choice Column & Closure a case sensitive valid option
$("select[title='Phase']").val("Closure");
//ProjectName being a Lookup Column & Test2 a case sensitive valid entry in the list
$("select[title='ProjectName']").val("Test2");
我在设置文本字段时没有问题,因为以下代码在我创建的文本字段上运行良好
$("input[title='TextField']").val("Test2");
我使用了以下 Jquery 库 1.7.2/min.js 和 1.11.3
不确定您的逻辑是否使用了 _spBodyOnLoadFunctionNames.push() 方法。通常,您必须等待所有 SharePoint DOM 对象加载完毕,然后才能执行您的 jQuery 代码。如果您使用 SharePoint JavaScript 库,您可能需要调用 ExecuteOrDelayUntilScriptLoaded() 以确保在加载幕后 SharePoint .js 文件后调用您的调用。
首先感谢 "Verona Chen" 和“DIEGO CARRASCAL”,因为他们我在 SharePoint 中学到了一些其他技巧,这些技巧将有助于其他项目。
问题之前我的原始脚本是尝试使用查询字符串填充 newform.aspx 中的字段(我在 Sharepoint 2013 上使用我在此处找到的代码完成了此操作)
不幸的是共享点online/365此代码不再有效。
这段代码解决了我的问题(尽管它确实改变了之前几个页面的构建方式)
抱歉,如果这不能直接回答上述问题(因为这是我试图根据我在原始代码中缩小问题范围,将我遇到的整体问题分解为更简单、更容易解决的问题)既然我现在起床了运行,看来只是对post结果客气了。
在编写代码之前,我有一个带有 "ProjectName" 字段的项目列表。我将字段名称发送到 URL 和查询字符串中以获取 mylist/newform.aspx?ProjectName=Test2
然后我试图将 Test2 拉入列表 "MyList"
中的查找字段(喜欢项目列表)"ProjectName"
但即使使用 _spBodyOnLoadFunctionNames.push() 为我的旧脚本加载函数,它也无法正常工作。
玩了一会儿,环顾四周后,我发现了这段代码
<script type="text/javascript">
(function () {
var ctx = {};
ctx.Templates = {};
ctx.Templates.Fields = {
'ProjectName': {
'NewForm': renderTaskCategory
}
};
SPClientTemplates.TemplateManager.RegisterTemplateOverrides(ctx);
})();
function renderTaskCategory(ctx) {
//extract cat parameter from a query string
var GetProjID = GetUrlKeyValue('ProjID');
//set lookup field value
ctx.CurrentFieldValue = GetProjID;
//default template for rendering Lookup field control
return SPFieldLookup_Edit(ctx);
}
</script>
这意味着我必须更改我以前的 url 构建以创建 mylist/newform.aspx?ProjID=2
此脚本然后找到项目 ID 2(在本例中恰好是 test2)并将项目 2 的标题放入我的查找字段 ProjectName
再次感谢之前提供帮助的人。
如果这不能直接回答我最初提出的问题,再次道歉。
我一直在做一些关于 Sharepoint Online/365 的工作,但在尝试设置 NewForm.aspx
中的查找或选择列的值时遇到了困难将我的问题缩小到无法设置 lookup/Choice 列
我已将我页面上的代码简化为
//Phase being a Choice Column & Closure a case sensitive valid option
$("select[title='Phase']").val("Closure");
//ProjectName being a Lookup Column & Test2 a case sensitive valid entry in the list
$("select[title='ProjectName']").val("Test2");
我在设置文本字段时没有问题,因为以下代码在我创建的文本字段上运行良好
$("input[title='TextField']").val("Test2");
我使用了以下 Jquery 库 1.7.2/min.js 和 1.11.3
不确定您的逻辑是否使用了 _spBodyOnLoadFunctionNames.push() 方法。通常,您必须等待所有 SharePoint DOM 对象加载完毕,然后才能执行您的 jQuery 代码。如果您使用 SharePoint JavaScript 库,您可能需要调用 ExecuteOrDelayUntilScriptLoaded() 以确保在加载幕后 SharePoint .js 文件后调用您的调用。
首先感谢 "Verona Chen" 和“DIEGO CARRASCAL”,因为他们我在 SharePoint 中学到了一些其他技巧,这些技巧将有助于其他项目。
问题之前我的原始脚本是尝试使用查询字符串填充 newform.aspx 中的字段(我在 Sharepoint 2013 上使用我在此处找到的代码完成了此操作)
不幸的是共享点online/365此代码不再有效。
这段代码解决了我的问题(尽管它确实改变了之前几个页面的构建方式)
抱歉,如果这不能直接回答上述问题(因为这是我试图根据我在原始代码中缩小问题范围,将我遇到的整体问题分解为更简单、更容易解决的问题)既然我现在起床了运行,看来只是对post结果客气了。
在编写代码之前,我有一个带有 "ProjectName" 字段的项目列表。我将字段名称发送到 URL 和查询字符串中以获取 mylist/newform.aspx?ProjectName=Test2
然后我试图将 Test2 拉入列表 "MyList"
中的查找字段(喜欢项目列表)"ProjectName"但即使使用 _spBodyOnLoadFunctionNames.push() 为我的旧脚本加载函数,它也无法正常工作。
玩了一会儿,环顾四周后,我发现了这段代码
<script type="text/javascript">
(function () {
var ctx = {};
ctx.Templates = {};
ctx.Templates.Fields = {
'ProjectName': {
'NewForm': renderTaskCategory
}
};
SPClientTemplates.TemplateManager.RegisterTemplateOverrides(ctx);
})();
function renderTaskCategory(ctx) {
//extract cat parameter from a query string
var GetProjID = GetUrlKeyValue('ProjID');
//set lookup field value
ctx.CurrentFieldValue = GetProjID;
//default template for rendering Lookup field control
return SPFieldLookup_Edit(ctx);
}
</script>
这意味着我必须更改我以前的 url 构建以创建 mylist/newform.aspx?ProjID=2
此脚本然后找到项目 ID 2(在本例中恰好是 test2)并将项目 2 的标题放入我的查找字段 ProjectName
再次感谢之前提供帮助的人。 如果这不能直接回答我最初提出的问题,再次道歉。