0

私はSharePoint2010を使用しており、フィールドの数とフォームの長さのために、JQueryを使用していくつかのタブを作成するカスタマイズされたnewform.aspxとeditform.aspxを持っています。

私が抱えている問題の1つは、ユーザーがフォームを保存しようとしているが、一部(またはすべての必須フィールド)に値を入力していない場合に、ユーザーに視覚的にアドバイスする方法です。SharePointのOOTB検証機能を使用して、アドレス指定する必要のあるフィールドを示していますが、必須フィールドの多くが異なるタブにあるため、保存する前にアドレス指定する必要のある必須フィールドを示すアラートウィンドウをポップアップ表示したいと思います。フォーム。

通常、私は2つまたは3つの必須フィールドのみを処理しますが、この場合は8つ以上の必須フィールドを処理します。以前は、JavaScriptのifelseステートメントを使用して次のことを行いました。

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

対処する必要のあるフィールドが非常に多いため、複数のネストされたifelseステートメントが最も効率的な方法ではないことを知っています。スイッチケースを利用するのが道でしょうか?おそらくループしますか?これを行うにはどうすればよいですか(私はJavaScriptに過度に精通していません)?

よろしくお願いします!

4

1 に答える 1

1

ネストされたステートメントは必要ありません。一度に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);}
于 2012-06-08T04:29:52.253 に答える