任务表单上需要SharePoint字段

时间:2014-12-29 22:33:24

标签: sharepoint-2013

我有一个任务表单(OOB),用户只有在点击被拒绝按钮时才需要输入注释。 我编写了以下脚本,但即使单击已批准的按钮,也会触发。

$('input[value=Rejected]').click(function() {
PreSaveAction();
});
});

function PreSaveAction()
{
var commentsBox = getFieldControl('ApprovalComments','Text');
var comments=$("textarea[title='ApprovalComments']").val(); 
if(comments.length==0)
{
var errorHtml='';
errorHtml = '<span class="ms-formvalidation"><span role="alert">Please enter Comments<br></span>        </span>';

commentsBox.after(errorHtml);
return false;
}
return false;
}
  function getFieldControl(fieldName,fieldType)
{
var control = $('[id^=' + fieldName + '_][id$=' + fieldType + 'Field]');
return control;
}

提前致谢

1 个答案:

答案 0 :(得分:0)

你可以轻松实现它。下面是jquery代码示例:

function PreSaveAction()
{
    var currentPage = decodeURIComponent(window.location.href.replace(/\+/g, " "));
    if (currentPage.contains("Lists/WorkflowTasks/EditForm.aspx")) 
    {
        var commentsTextArea=$("textarea[title='ApprovalComments']");
        if(commentsTextArea.val().trim()=="")
        {
            var errorHtml='';
            errorHtml = '<span class="ms-formvalidation"><span role="alert">Please enter Comments<br></span></span>';
            commentsTextArea.after(errorHtml);
            return false;
        }
        else
        {
            return true;
        }
    }else
    {
        return true;
    }
}

String.prototype.contains = function (it) {
    return this.indexOf(it) != -1;
};

<强> 说明:

  • PreSaveAction 方法将在SP2010 / SP2013中的所有新表单和编辑表单中触发。
  • 因此,不需要使用Button onClick方法对这些表单进行客户端验证。
  • 在上面的代码中,当您点击页面中的“保存/已批准/已拒绝”按钮时,将触发PreSaveAction。
  • 我们将检查当前页面是否为任务表单( WorkflowTasks 是任务列表的名称,请相应更新),否则 返回true 即可。
  • 如果ApprovalComments为空,则会显示错误消息, 返回false
  • 否则, 返回true
  • 另请注意帮助方法 String.prototype.contains