【问题标题】:Redirect after form Submit (CSR)表单提交后重定向 (CSR)
【发布时间】:2016-12-30 12:10:36
【问题描述】:

在被 CSR(客户端呈现)覆盖的 SharePoint 表单内。

我尝试添加一个新按钮,它与保存按钮几乎相同,只是它重定向到具有给定参数的另一个表单。

问题是,重定向不起作用。 我尝试通过更改表单的“action”属性进行重定向,但似乎没有计算在内。

这是新按钮: <input id="custom_addLine" type="button" name="custom_addLine" value="+" class="ms-ButtonHeightWidth">

下面是按钮调用的函数和addLine方法:

$('#custom_addLine').click(function(event){
    event.preventDefault();
    addLine(getQueryStringParameter('ID'));
});


function addLine(id) {
    if(!PreSaveItem()) {
        return false;
    }
    var actionUrl = "/Lists/PurchaseRequestLine/NewForm.aspx?PurchaseRequestID="+ id;
    var encodedActionUrl = encodeURIComponent(actionUrl);

    var newFormAction = location.pathname + '?Source=' + encodedActionUrl;
    $('#aspnetForm').attr('action',newFormAction);

    if(SPClientForms.ClientFormManager.SubmitClientForm('WPQ1')){
        return false;
    }
    WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions('custom_addLine', "", true, "", "", false, true));
}

getQueryStringParameter 是一个自定义函数,用于从 URI 中检索参数(有效)。

棘手的部分是我想保留默认操作 URI,以防单击原始保存按钮,这就是动态修改操作参数的原因。

【问题讨论】:

    标签: javascript jquery redirect sharepoint sharepoint-online


    【解决方案1】:

    您可以直接从原始操作更改Source 属性:

     function addLine(id) {
        if(!PreSaveItem()) {
            return false;
        }
    
        var oldActionUrl = $('#aspnetForm').attr('action');
        var oldSource = GetUrlKeyValue("Source", true, oldActionUrl);
    
        var newSource = "/Lists/PurchaseRequestLine/NewForm.aspx?PurchaseRequestID="+ id;
    
        var newActionUrl = oldActionUrl.replace(oldSource, encodeURIComponent(newSource));
    
        WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions('custom_addLine', "", true, "", newActionUrl, false, true));
    }
    

    【讨论】:

    • 这仍然会将表单提交到同一位置吗?我的意思是,SharePoint 在提交后使用 URI 中给出的“Source”参数进行重定向,除了 Source 参数指向的位置之外,还有什么方法可以重定向到其他地方?
    • 原始Source参数是否存储在原始表单动作中?当您恢复原始操作时,下一次提交的结果将相同(取决于输入值)
    • 我不确定是否理解问题所在。更改表单操作是否有效?如果没有,我的回复可以帮助您,否则是您的 Source 属性不起作用?
    • 更多的是改变 Source 参数而不是 Action 属性。我希望表单像以前一样继续提交,但重定向到另一个来源。问题是,我不知道 SharePoint 原生表单如何管理 Source 参数,如果它只是从 URI 获取或存储在其他地方(我可以修改)。
    • 必须覆盖原始保存按钮才能进行重定向。结果我修改了你的答案。
    【解决方案2】:

    从您的代码中删除 event.preventDefault();,它负责重定向不起作用

    $('#custom_addLine').click(function(event){    
    addLine(getQueryStringParameter('ID'));
    });
    

    【讨论】:

      猜你喜欢
      • 2013-04-13
      • 1970-01-01
      • 2013-08-06
      • 2015-03-25
      • 1970-01-01
      相关资源
      最近更新 更多