表单提交后重定向(CSR)

Hyb*_*s95 5 javascript sharepoint jquery redirect sharepoint-online

在CSR表单中覆盖的SharePoint表单(客户端呈现).

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

问题是,重定向不起作用.我尝试通过更改表单的"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));
}
Run Code Online (Sandbox Code Playgroud)

getQueryStringParameter是一个自定义函数,用于从URI中检索参数(可以工作).

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

apr*_*ent 4

您可以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));
}
Run Code Online (Sandbox Code Playgroud)