2012-06-07 49 views
0

我正在使用SharePoint 2010並具有自定義的newform.aspx和editform.aspx,我使用JQuery創建多個選項卡,這是由於字段數量和表單長度的限制。SharePoint 2010/JavaScript使用警報進行多個字段驗證

我遇到的一個問題是如何在用戶試圖保存表單時直觀地提醒用戶,但在某些(或所有必填字段)中未輸入值。我在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

你不需要嵌套語句。只需一次一個地通過你的領域建立你的警報,然後觸發它:

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