There's a bug in apex:actionFunction
which prevents the action from firing properly unless you include a rerender attribute. Try giving it a rerender="none"
(or some valid component), and move it up one level (inside the form, outside the tabPanel). Also, your Javascript func()
isn't needed, as you can just call onclick="CallApexMethod();"
<apex:sectionHeader title="Event" subtitle="{!Event.Subject}"/>
<apex:form >
<apex:pagemessages id="errors" />
<apex:actionFunction name="CallApexMethod" action="{!campaignpage}" rerender="errors" />
<apex:tabPanel switchType="ajax" id="tabVerify1" selectedTab="c">
<apex:tab label="Event" name="name1"> You are in Event Page! </apex:tab>
<apex:tab label="Campaign Feedback" rendered="{!readonly}" onclick="CallApexMethod()" id="tabDetails" >
</apex:tab>
<apex:tab label="Chargeable Single Order" onTabEnter="window.parent.location.replace('/apex/page2');" > </apex:tab>
<apex:tab label="Giveaway Order" onTabEnter="window.parent.location.replace('/apeX/page3');" > </apex:tab>
</apex:tabPanel>
</apex:form>