検証ルールはあなたのために機能しますか?チェックボックスを考慮した動的に必要なフィールドごとに検証ルールを設定できます。サーバー側の検証はこれで処理されますが、データを送信するためにApexクラスと拡張機能(JavaScriptやjQueryなど)以外のものを使用している場合は、クライアント側を個別に処理する必要があります。
Visualforceが提供するデフォルトのCSSStylingを利用するには、ユーザーが値を入力せずに保存しようとした場合に、input要素に「error」クラスを追加します。
これは、クライアント側の検証にアプローチする方法のコードスニペットです(noConflictモードでjQueryを使用してj$
):
// check required fields
j$(RequiredFields).each(function(index,field)
{
if(!(field.val() && field.val() != "" && field.val() != "--None--")) { field.addClass("error"); RequiredFieldsInError.push(field); }
else { field.removeClass("error"); }
});
if(RequiredFieldsInError.length > 0)
{
var RequiredFieldLabels = [];
j$(RequiredFieldsInError).each(function(index,field){
var RequiredFieldLabel = j$("label[for$="+j$(field).attr('id')+"]").html().trim(); RequiredFieldLabels.push(RequiredFieldLabel);
field.after("<div id='"+field.attr("id")+"_error' class='errorMsg' >"+RequiredFieldLabel+" is Required.</div>");
});
if (RequiredFieldLabels.length > 1) {
RequiredFieldLabels[RequiredFieldLabels.length - 1] = "and " + RequiredFieldLabels[RequiredFieldLabels.length - 1];
}
j$("#ErrorSummary")
.html(RequiredFieldLabels.join(", ")+" "+(RequiredFieldLabels.length > 1 ? "are" : "is a")+" required field(s). ")
.css("color","#CC0000");
return;
}