如何在保存按钮上添加重定向链接?

时间:2014-03-21 15:07:37

标签: sharepoint sharepoint-2010

我试图让讨论板的消息部分中的保存按钮返回到团队网站,而不是留在讨论板页面上。我一直在寻找几个小时,但我找不到多少。我试图插入此代码:

<script type="text/javasccript">
$(document).ready(function() { 
  var button = $("input[id$=SaveItem]");
  // change redirection behavior
  button.removeAttr("onclick");
  button.click(function() {
  var elementName = $(this).attr("name");
  var aspForm = $("form[name=aspnetForm]");
  var oldPostbackUrl = aspForm.get(0).action;
  var currentSourceValue = GetUrlKeyValue("Source", true, oldPostbackUrl);
  var newPostbackUrl = oldPostbackUrl.replace(currentSourceValue, "mySite.aspx");
  if (!PreSaveItem()) return false;
  WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(elementName, "", true, "", newPostbackUrl, false, true));
  });
}); 
</script>

但它没有工作,我在NewForm.aspx中遇到了这个错误:

语言过滤器:未连接

未连接语言过滤器。要连接语言过滤器,请打开Web部件编辑菜单,然后选择&#34; Connections&#34;将此语言过滤器连接到其他Web部件。

无论如何,现在我输了,任何帮助都会很棒。

3 个答案:

答案 0 :(得分:1)

您可以更改新项目形式查询字符串的Source参数,如下所示:

http://siteurl/testing/teamsite/Lists/Team%20Discussion/New1.aspx?Source=siteurl

单击“取消”或“保存”按钮时,页面将重定向到指定的URL。然后,不需要jquery来覆盖Save按钮。

有关详细信息,请参阅此帖子http://sympmarc.com/2009/10/20/passing-a-source-parameter-on-the-query-string-with-multiple-other-parameters/

答案 1 :(得分:0)

它对我来说也不起作用,但我最终通过评论除第一个变量之外的所有行并将其输出到控制台来使其工作。控制台输出告诉我aspForm为null。所以我在那一刻知道&#34;形式[name = aspnetForm]&#34;源代码中不存在。通过检查源我管理到找到id = aspnetForm的表单,所以我替换了那行代码,瞧!

var aspForm = $("form[id=aspnetForm]");

答案 2 :(得分:0)

我已经看过很多关于如何执行此操作的帖子 - 没有SOURCE查询字符串。

所以我在SharePoint 2013中测试了这个解决方案几个小时。这个SAVE按钮绝对按预期重定向;我将它重定向到"/Pages/default.aspx"

$(document).ready(function() {

var elementName;
var oldPostbackUrl;
var currentSourceValue;
var newPostbackUrl;

var button = $("input[id$=SaveItem]");

// change redirection behavior
button.removeAttr("onclick");
button.click(function() {
  var elementName = $(this).attr("name");
  var aspForm = $("form[id=aspnetForm]");
  oldPostbackUrl = aspForm[0].action;
  currentSourceValue = GetUrlKeyValue("Source", true,    
  oldPostbackUrl);
  newPostbackUrl = oldPostbackUrl.replace(currentSourceValue, "/Pages/default.aspx");


  if (!PreSaveItem()) return false;

  WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(elementName, "", true, "", newPostbackUrl, false, true));


}); //end button.click


}); //end doc ready