Jquery 需要以编程方式使sharepoint字段成为必需字段

Jquery 需要以编程方式使sharepoint字段成为必需字段,jquery,sharepoint,sharepoint-2010,Jquery,Sharepoint,Sharepoint 2010,我使用的是标准的sharpoint表单,我有一个代码,当用户在“状态”下拉列表中选择“已完成”时,它会显示一个跟踪编号。所有的it功能,我现在需要做的是,一旦他们选择完成,就提供所需的跟踪编号。如果我通过sharepoint将该字段设为必填字段,然后尝试将其隐藏,sharepoint将不会保存该任务:/以下是我的代码: $(document).ready(function () { var statusField = SPUtility.GetSPField('Status'); v

我使用的是标准的sharpoint表单,我有一个代码,当用户在“状态”下拉列表中选择“已完成”时,它会显示一个跟踪编号。所有的it功能,我现在需要做的是,一旦他们选择完成,就提供所需的跟踪编号。如果我通过sharepoint将该字段设为必填字段,然后尝试将其隐藏,sharepoint将不会保存该任务:/以下是我的代码:

$(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,但它对我不起作用,谢谢你把它拼出来。很高兴我能帮上忙!别忘了将此标记为已回答,这样人们就知道你还没有找到答案。