表单提交后重定向(CSR)
Redirect after form Submit (CSR)
在由 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,以防单击原始“保存”按钮,这就是即时修改操作参数的原因。
您可以直接从原始操作更改 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));
}
请从您的代码中删除event.preventDefault();,它负责重定向不起作用
$('#custom_addLine').click(function(event){
addLine(getQueryStringParameter('ID'));
});
在由 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,以防单击原始“保存”按钮,这就是即时修改操作参数的原因。
您可以直接从原始操作更改 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));
}
请从您的代码中删除event.preventDefault();,它负责重定向不起作用
$('#custom_addLine').click(function(event){
addLine(getQueryStringParameter('ID'));
});