Jquery 需要以编程方式使sharepoint字段成为必需字段
我使用的是标准的sharpoint表单,我有一个代码,当用户在“状态”下拉列表中选择“已完成”时,它会显示一个跟踪编号。所有的it功能,我现在需要做的是,一旦他们选择完成,就提供所需的跟踪编号。如果我通过sharepoint将该字段设为必填字段,然后尝试将其隐藏,sharepoint将不会保存该任务:/以下是我的代码:Jquery 需要以编程方式使sharepoint字段成为必需字段,jquery,sharepoint,sharepoint-2010,Jquery,Sharepoint,Sharepoint 2010,我使用的是标准的sharpoint表单,我有一个代码,当用户在“状态”下拉列表中选择“已完成”时,它会显示一个跟踪编号。所有的it功能,我现在需要做的是,一旦他们选择完成,就提供所需的跟踪编号。如果我通过sharepoint将该字段设为必填字段,然后尝试将其隐藏,sharepoint将不会保存该任务:/以下是我的代码: $(document).ready(function () { var statusField = SPUtility.GetSPField('Status'); v
$(document).ready(function () {
var statusField = SPUtility.GetSPField('Status');
var showOrHideField = function() {
var statusFieldValue = statusField.GetValue();
if(statusFieldValue != 'Appeal Mailed') {
SPUtility.HideSPField('Tracking Number');
}
else
{
SPUtility.ShowSPField('Tracking Number');
}
};
showOrHideField();
$(statusField.Dropdown).on('change', showOrHideField);
});
以下是几个选项: 选项1:列出验证设置 这可以使用SharePoint 2010的列表验证设置以非编程方式完成。(转到列表设置->验证设置。) 您可以添加一个类似Excel的公式,该公式必须解析为true才能将某个项视为有效项 在您的情况下,公式如下所示:
=如果([Status]=“completed”,而不是(ISBLANK([Tracking Number])),则为TRUE)
选项2:覆盖预保存操作()
在JavaScript中,您可以覆盖编辑表单上的PreSaveAction()函数,以便在允许提交表单之前执行编程检查
在函数中,如果一切正常且希望保存,则返回true
,或者返回false
以中止保存
例如:
function PreSaveAction(){
var statusField = SPUtility.GetSPField('Status');
var trackingField = SPUtility.GetSPField('Tracking Number');
var isValid =
statusField.GetValue() != "completed" ||
trackingField.GetValue().length > 0;
if(!isValid){
alert("You must enter a tracking number.");
}
return isValid
}
我必须这样做的方式是在我的“默认新表单”和“默认编辑表单”上放置一个内容编辑器…我应该将您提供给我的代码与我粘贴的代码放在一起,还是将其放在列表中。我想知道除了内容编辑器方法之外,是否还有更好的方法来实现这一点。顺便说一下,谢谢你的帮助:)用你的代码输入应该没问题。如果您通过新表单和编辑表单底部的内容编辑器web部件添加JavaScript,您应该能够覆盖脚本中的PreSaveAction函数。这很有效!!!我明白了…非常感谢,我以前试过presave,但它对我不起作用,谢谢你把它拼出来。很高兴我能帮上忙!别忘了将此标记为已回答,这样人们就知道你还没有找到答案。