2012-04-17 24 views
0

我正在使用Salesforce中的自定义表单,并遇到了一个绊脚石,如果某个复选框被选中,可选字段将变为必需字段。Salesforce:创建有条件的Apex表单字段

例如,如果用户检查付款电子转帐选项,所有的字段相关EFT应随即成为(在不可选的)启用,顶点应该显示他们为必填字段。

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

感谢您的任何帮助或线索解决这个问题。

回答

0

Validation Rules为您工作?您可以为每个需要考虑复选框的动态必需字段设置验证规则。这将关注服务器端验证,但如果您使用除Apex类和扩展(如JavaScript或jQuery)之外的任何其他方法提交数据,则需要单独处理客户端。

要利用Visualforce提供的默认CSS样式,如果用户尝试保存而不输入值,请将“error”类添加到输入元素。

这里是我将如何接近客户端验证(使用jQuery在noConflict模式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; 
}