0

我正在使用 Salesforce 中的自定义表单,如果选中某个复选框,则在使可选字段动态变为必填字段时遇到了一个绊脚石。

例如,如果用户选中电子转帐选项进行付款,则所有与EFT相关的字段都应启用,Apex 应将它们显示为必填字段(如非​​可选字段)。

我目前正在使用 jQuery 启用字段,但很难找到如何将字段更改为 Apex 必需字段的示例。

感谢您提供解决此问题的任何帮助或线索。

4

1 回答 1

0

验证规则对您有用吗?您可以为每个将复选框考虑在内的动态必填字段都有一个验证规则。这将处理服务器端验证,但如果您使用 Apex 类和扩展(如 JavaScript 或 jQuery)以外的任何东西来提交数据,则需要单独处理客户端。

为了利用 Visualforce 提供的默认 CSS 样式,如果用户尝试保存而不输入值,请向输入元素添加“错误”类。

这是我将如何处理客户端验证的代码片段(在 noConflict 模式下使用 jQuery as 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 回答