0

Salesforceでカスタムフォームを使用していますが、特定のチェックボックスがオンになっている場合に、オプションのフィールドを動的に必須フィールドに変換する際の障害に遭遇しました。

たとえば、ユーザーが電子送金オプションで支払いを確認した場合、 EFTに関連するすべてのフィールドが有効になり、Apexはそれらを必須フィールドとして表示する必要があります(オプションではありません)。

現在、jQueryを使用してフィールドを有効にしていますが、フィールドをApex必須フィールドに変更する方法の例を見つけるのに苦労しています。

この問題を解決するための助けやリードをありがとう。

4

1 に答える 1

0

検証ルールはあなたのために機能しますか?チェックボックスを考慮した動的に必要なフィールドごとに検証ルールを設定できます。サーバー側の検証はこれで処理されますが、データを送信するために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;
}
于 2012-04-17T18:32:54.403 に答える