簡體   English   中英

帶有警報的SharePoint 2010 / JavaScript多字段驗證

[英]SharePoint 2010/JavaScript Multiple Field Validations with Alerts

我正在使用SharePoint 2010,並且由於字段的數量和表單的長度而使用JQuery創建了多個選項卡,因此具有自定義的newform.aspx和editform.aspx。

我遇到的問題之一是當用戶嘗試保存表單但未在某些(或所有必填字段)中輸入值時如何以視覺方式建議用戶。 我正在使用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語句不是最有效的方法。 利用開關盒會是走的路嗎? 可能會循環嗎? 我將如何去做(我不太精通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);}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM