SharePoint Designer 2007を使用してリストやライブラリのNewForm.aspx(アイテムの新規作成)やEditForm.aspx(アイテムのプロパティ編集)を編集し、カスタムのJavaScriptを実装することで日付などの入力フィールドの妥当性の検証が可能です。たとえば、開始日と終了日の2つのフィールドがあったとして、終了日が開始日より前の日付となっているような場合、SharePoint Server 2007ではエラーとして扱ってくれません。そこで、JavaScript を実装して2つのフィールド値の比較をしてエラーを検出するようにします。この時、「PreSaveAction」という名前の関数を定義すると、[OK]ボタンクリック時の既定の処理を制御できます。実際には、このPreSaveAction関数はSharePointが既定で持っている関数であり、これを上書きして既定の動作を少し変えてやります。
参考までに、"開始日"と"終了日"という名前の2つの"日付と時刻(日付のみ)"のフィールドがあることを前提としたサンプルコードを記載しておきます。
PreSaveAction 関数を上書きするコードサンプル
function PreSaveAction()
{
var startDate=getTagFromIdentifierAndTitle("input","DateTimeFieldDate","開始日");
var endDate=getTagFromIdentifierAndTitle("input","DateTimeFieldDate","終了日");
var date1Array=startDate.value.split("/");
var date1=new Date(date1Array[0],date1Array[1]-1,date1Array[2]);
var date2Array=endDate.value.split("/");
var date2=new Date(date2Array[0],date2Array[1]-1,date2Array[2]);
if (date1>date2)
{
alert("日付の指定が正しくありません");
return false;
}//if
return true;
} //function
//SharePointのフィールドを取得するための関数
function getTagFromIdentifierAndTitle(tagName,identifier,title)
{
var len=identifier.length;
var tags=document.getElementByTagName(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];
}//if
return null;
}//for
}//function