单击了哪个按钮启动了SharePoint任务编辑窗体上的PreSaveAction功能



这是我在stackoverflow上的第一个问题,如果有任何错误,请耐心等待。

我们正在使用SharePoint Online,希望对任务编辑表单进行验证。验证分别针对"已批准"one_answers"已拒绝"按钮。如果用户单击Approved按钮,它应该验证people picker字段是否有值。但是,如果用户单击Rejected按钮,则它应该验证注释富格文本编辑器框。

在当前的任务编辑窗体上,按钮具有以下onclick事件:

if (!PreSaveItem()) return false;
if (SPClientForms.ClientFormManager.SubmitClientForm('WPQ2')) return false;
WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$ctl34$g_c787a6e1_0aac_4259_aaa9_1ed77297a7ee$ctl00$toolBarTbl$RightRptControls$ctl00$ctl00$diidIOSaveItem", "", true, "", "", false, true))

我尝试过的解决方案是创建一个点击事件并添加到按钮中,然后编写我的jquery(3.1.1)。然而,我无法使用上面提到的WebForm_PostBackOptions代码发布表单。因此,我使用了SharePoint本机验证PreSaveAction函数,该函数不允许对字段进行单独的验证。

因此,我如何捕捉单击的按钮,并在PreSaveAction函数中获取其值,以便运行验证?

谢谢当做Tanzim

Alhamduillaah,问题解决了。

以下是其他人面临类似问题时的片段:

<script language="javascript">
$(function()
{
var butApproved = $("input[value='Approved']");
var butRejected = $("input[value='Rejected']");
var butSaveName = $("input[value='Save']").attr("name");
var optionResult = "";

butApproved.attr("onclick", "");
butRejected.attr("onclick", "");

butApproved.attr("onclick", "optionResult='Approved'; if (!PreSaveItem()) return false;if (SPClientForms.ClientFormManager.SubmitClientForm('WPQ2')) return false;WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions('" + butSaveName + "', '', true, '', '', false, true))");
butRejected.attr("onclick", "optionResult='Rejected'; if (!PreSaveItem()) return false;if (SPClientForms.ClientFormManager.SubmitClientForm('WPQ2')) return false;WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions('" + butSaveName + "', '', true, '', '', false, true))");
});
function PreSaveAction()
{
if (optionResult == "Approved")
{
alert("Approved clicked");
return false;
}
else if (optionResult == "Rejected")
{
alert("Rejected clicked");
return false;
}
else
{
alert("Something else happend");
}
return true;
}
</script>

Tanzim

最新更新