2012-04-17 3 views
0

Я работаю с пользовательской формой в Salesforce и столкнулся с камнем преткновения при создании необязательных полей динамически, если установлен определенный флажок.Salesforce: Создание условно обязательных полей формы Apex

Например, если пользователь проверяет Electronic Funds Transfer вариант для оплаты, все поля, связанные с EFT должны затем стать поддержкой и Apex должны отображать их как обязательные поля (как в не по желанию).

В настоящее время я использую поля, использующие jQuery, но мне трудно найти примеры того, как изменить поля в поля, требуемые Apex.

Благодарим за помощь или решение проблемы при решении этой проблемы.

ответ

0

Будет ли Validation Rules работать на вас? У вас может быть правило проверки для каждого динамически требуемого поля, которое учитывает этот флажок. Это позаботится о проверке на стороне сервера, но вам нужно будет позаботиться о стороне клиента отдельно, если вы используете что-то другое, кроме классов и расширений Apex (например, JavaScript или jQuery), чтобы отправить данные.

Чтобы воспользоваться преимуществами CSS Styling по умолчанию, VisualStream обеспечивает добавление класса «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; 
} 
Смежные вопросы