带有警报的SharePoint 2010 / JavaScript多字段验证

时间:2012-06-07 16:20:54

标签: javascript sharepoint sharepoint-2010

我正在使用SharePoint 2010并且有一个自定义的newform.aspx和editform.aspx,由于字段数量和表单长度,我使用JQuery创建多个选项卡。

我遇到的一个问题是如何在用户尝试保存表单时向用户提供视觉建议但未在某些(或所有必填字段)中输入值。我在SharePoint中使用OOTB验证功能来指示哪些字段需要解决,但是由于许多必需字段现在位于不同的选项卡上,我想弹出一个警告窗口,指示在保存之前需要解决哪些必填字段形式。

通常情况下,我只处理两个或三个必填字段,但在这种情况下,我处理的是八个必填字段,可能还有更多字段。在过去,我会使用JavaScript if else语句执行以下操作:

 function PreSaveAction() {
    var tbTitle = getTagFromIdentifierAndTitle("input", "TextField", "Title");
    var tbVisitor = getTagFromIdentifierAndTitle("input", "TextField", "Visitor"); {
        if (tbTitle.value == "" && tbVisitor.value == "") {
            alert(tbTitle.title + ' is a required field' + '\n' + tbVisitor.title + ' is a required field');
            return true;
        } else {
            if (tbTitle.value == "") {
                alert(tbTitle.title + ' is a required field');
                return true;
            } else {
                if (tbVisitor.value == "") {
                    alert(tbVisitor.title + ' is a required field');
                    return true;
                } else {
                    return true;
                }
            }
        }
    }
}
function getTagFromIdentifierAndTitle(tagName, identifier, title) {
    var len = identifier.length;
    var tags = document.getElementsByTagName(tagName);
    for (var i = 0; i < tags.length; i++) {
        var tempString = tags[i].id;
        if (tags[i].title == title && (identifier == "" || tempString.indexOf(identifier) == tempString.length - len)) {
            return tags[i];
        }
    }
    return null;
}

由于我有很多必需的字段要解决,我知道多个嵌套的if else语句不是最有效的方法。利用开关盒是否可行?可能循环?我将如何做到这一点(我不是非常精通JavaScript)?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您不需要嵌套语句。只需逐个浏览您的字段即可构建警报,然后触发它:

var alertString="";

if (tbTitle.value == "") {  
    alertString+= tbTitle.title + ' is a required field' + '\n';  
}
if (tbVisitor.value == "") {  
    alertString+= tbVisitor.title + ' is a required field' + '\n';  
}
...
// After going through all fields:
if (alertString) {alert(alertString);}