Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SharePoint 2010/JavaScript带警报的多字段验证_Javascript_Sharepoint_Sharepoint 2010 - Fatal编程技术网

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

SharePoint 2010/JavaScript带警报的多字段验证,javascript,sharepoint,sharepoint-2010,Javascript,Sharepoint,Sharepoint 2010,我正在使用SharePoint 2010,并且有一个自定义的newform.aspx和editform.aspx,由于字段的数量和表单的长度,我正在使用JQuery创建几个选项卡 我遇到的一个问题是,当用户试图保存表单但未在某些(或所有必填字段)中输入值时,如何直观地通知用户。我正在使用SharePoint中的OOTB验证功能来指示哪些字段需要寻址,但是,由于许多必填字段现在位于不同的选项卡上,我希望在保存表单之前弹出一个警报窗口,指示哪些必填字段需要寻址 通常我只处理两个或三个必填字段,但在本

我正在使用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;
}
函数PreSaveAction(){
var tbTitle=getTagFromIdentifierAndTitle(“输入”、“文本字段”、“标题”);
var tbVisitor=getTagFromIdentifierAndTitle(“输入”、“文本字段”、“访问者”){
if(tbTitle.value==“”&tbVisitor.value==“”){
警报(tbTitle.title+'是必填字段“+”\n“+tbVisitor.title+'是必填字段”);
返回true;
}否则{
如果(tbTitle.value==“”){
警报(tbTitle.title+“是必填字段”);
返回true;
}否则{
如果(tbVisitor.value==“”){
警报(tbVisitor.title+“是必填字段”);
返回true;
}否则{
返回true;
}
}
}
}
}
函数getTagFromIdentifierAndTitle(标记名、标识符、标题){
var len=identifier.length;
var tags=document.getElementsByTagName(标记名);
对于(var i=0;i
由于我有很多必填字段要处理,我知道多个嵌套的if-else语句并不是最有效的方法。利用开关箱是一条路吗?可能是循环?我该怎么做(我对JavaScript不太精通)


提前谢谢你的帮助

您不需要嵌套语句。只需一次浏览一个字段来构建警报,然后触发警报:

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);}