Disclaimer: This website requires Please enable JavaScript in your browser settings for the best experience.

HomeDev GuideRecipesAPI Reference
Dev GuideAPI ReferenceUser GuideGitHubNuGetDev CommunityOptimizely AcademySubmit a ticketLog In
Dev Guide
GitHubNuGetDev CommunityOptimizely AcademySubmit a ticket

Optimizely developer documentation

How can we help you?

Try our conversational search powered by Generative AI!

AI OnAI Off

Handle events

Shows how to handle client-side epiforms events in Alloy MVC templates with JavaScript.

📘

Note

Optimizely Forms is only supported by MVC-based websites and HTML5-compliant browsers.

Query client-side events

The following JavaScript code shows how to handle client-side epiforms events in Alloy MVC templates.

if (typeof $$epiforms !== 'undefined') { $$epiforms(document).ready(function myfunction() { console.log('listen to event'); $$epiforms(".EPiServerForms").on("formsNavigationNextStep formsNavigationPrevStep formsSetupCompleted formsReset formsStartSubmitting formsSubmitted formsSubmittedError formsNavigateToStep formsStepValidating ", function(event, param1, param2) { console.log($$epiforms(this).get(0), event); }); }); }

For a QuickSilver site, put the following script before @Html.RequiredClientResources("Footer").

if (typeof $$epiforms !== 'undefined') { console.log('listen to event'); $$epiforms(".EPiServerForms").on("formsLoadExternalScripts formsLoadExternalCss", function(event, param1, param2) { console.log($$epiforms(this).get(0), event); }); }

The following jQuery event objects are notification-only:

  • type – Type of event.
  • workingFormDOMElement – The DOM element raises the event.
  • workingFormInfo – Contains meta-information of current Optimizely Forms.
  • formData – some submitting-related events, this property contains the standard FormData object of the submission.

📘

Note

The form event handling script must be placed below the @Html.RequiredClientResources("Header"). For example:

<head> @Html.RequiredClientResources("Header") @Scripts.Render("/ClientResources/Scripts/FormEventHandling.js") </head>

📘

Note

If event handling script is rendered using EPiServer.Framework.Web.Resources.IRequiredClientResourceList, then it must depend on EPiServer.Forms.ConstantsForms.StaticResource.JS.FormsjQuery and EPiServer.Forms.ConstantsForms.StaticResource.JS.EPiServerFormsPrerequisite. For example:

var requiredResources = ServiceLocator.Current.GetInstance<IRequiredClientResourceList>(); requiredResources.RequireScript("/ClientResources/Scripts/FormEventHandling.js", "", new List<string>{ ConstantsForms.StaticResource.JS.FormsjQuery, ConstantsForms.StaticResource.JS.EPiServerFormsPrerequisite }).AtHeader();

.NET events

Form submissions (and form step submissions) must result in events.

  • FormsStructureChange
  • FormsStepSubmitted
  • FormsSubmissionFinalized
  • FormsSubmitting

The following example code catches server-side events in InitializationModule:

// get the Forms Event Manager to listen to its events var formsEvents = ServiceLocator.Current.GetInstance<FormsEvents>(); formsEvents.FormsStructureChange += OnStructureChange; formsEvents.FormsSubmitting += OnSubmitting1; formsEvents.FormsSubmitting += OnSubmitting2; formsEvents.FormsStepSubmitted += OnStepSubmit; formsEvents.FormsSubmissionFinalized += OnFormFinalized;

With FormsSubmitting, FormsStepSubmitted, and FormsSubmissionFinalized events, you can cast the eventArgs to FormsSubmittingEventArgs, where you can get information from SubmissionData (having SubmissionData.Data as IDictionary<string, object>) and the FormSubmissionId.

List of events

  • formsNavigationNextStep
  • formsNavigationPrevStep
  • formsSetupCompleted
  • formsReset
  • formsStartSubmitting
  • formsSubmitted
  • formsSubmittedError
  • formsNavigateToStep
  • formsStepValidating
  • FormsStructureChange
  • FormsStepSubmitted
  • FormsSubmissionFinalized
  • FormsSubmitting

Did this page help you?