1

仅当 inputField“Gift_ c.PaymentMethod _c”(这是一个下拉菜单)具有特定值(即“信用卡”)时,我才想显示 pageBlockSection“ccBlock” 。我已经尝试了很多方法,但到目前为止没有运气。

    <apex:pageBlockSection title="Basic Information" columns="1" >
        <apex:inputField value="{!Gift__c.Contact__c}"/>
        <apex:inputField value="{!Gift__c.PaymentMethod__c}" id="payMethod" >
            <apex:actionSupport event="onchange"  reRender="ccBlock, bankBlock" action="{!HideBlock}" />
        </apex:inputField>
    </apex:pageBlockSection>
    <apex:pageBlockSection title="Credit Card" rendered="{!visi}" columns="1" id="ccBlock">
        <apex:inputField value="{!Gift__c.CCType__c}"/>
        <apex:inputField value="{!Gift__c.CCName__c}"/>
        <apex:inputField value="{!Gift__c.CCNumber__c}"/>
        <apex:inputField value="{!Gift__c.CCExpiryMonth__c}"/>
        <apex:inputField value="{!Gift__c.CCExpiryYear__c}"/>
    </apex:pageBlockSection>  
4

1 回答 1

1

您的解决方案不起作用,因为您尝试重新渲染已隐藏的 pageBlockSection,因此您无权访问此部分。为此,您需要重新渲染一些“包装”面板。

我更喜欢用 javascript 来做这样的事情:

<apex:pageBlockSection title="Basic Information" columns="1" >
    <apex:inputField value="{!Gift__c.Contact__c}"/>
    <apex:inputField value="{!Gift__c.PaymentMethod__c}" id="payMethod" onchange="checkValue()"/>
</apex:pageBlockSection>

<apex:outputPanel style="display:none;" id="myPanel">
    <apex:pageBlockSection title="Credit Card" rendered="{!visi}" columns="1" id="ccBlock">
        <apex:inputField value="{!Gift__c.CCType__c}"/>
        <apex:inputField value="{!Gift__c.CCName__c}"/>
        <apex:inputField value="{!Gift__c.CCNumber__c}"/>
        <apex:inputField value="{!Gift__c.CCExpiryMonth__c}"/>
        <apex:inputField value="{!Gift__c.CCExpiryYear__c}"/>
    </apex:pageBlockSection>  
</apex:outputPanel>

<script>
function checkValue(){
    if(jQuery('[id$=payMethod]').val() == 'Credit Card'){
        jQuery('[id$=myPanel]').show();
    }
    else{
        jQuery('[id$=myPanel]').hide();
    }
}
</script>
于 2012-10-01T14:01:51.373 回答