New to Kendo UI for jQuery? Download free 30-day trial

Form Integration

The Wizard provides integration with the Kendo UI Form component.

Each step of the Wizard accepts a form configuration object which defines the options as they are available in the Form component itself. Each Form defined within the Wizard configuration will have all the functionality available in the stand-alone Form component.

In order to facilitate the scenarios where Forms are integrated within the Wizard, the component can be initialized either from a <form> element or a <div> element.

Initialization from a <form> Element

When the Wizard is initialized from a <form> element the Done button at the last Wizard step will act as a submit button. In this scenario if any Form is defined within the Wizard configuration, its element will be rendered as a <div> element. If the built-in validation of the underlying Form within the Wizard will be used it is advisable to add the novalidate attribute to the <form> the Wizard is initialized from.

    <form id="wizard" style="width:800px;" novalidate method="post"></form>

    <script>
    $("#wizard").kendoWizard({
        validateForms: true,
        steps:[{
                title: "Start",
                content: '<h1>Start Registration</h1><br/><br/><br/><h3>Click "Next" to start filling-in the form</h3>'
            },{
                title: "Attendee Details",
                form: {
                    formData: {
                        FirstName: "",
                        LastName: "",
                        Email: "",
                    },
                    items: [
                        { field: "FirstName", label: "First Name:", validation: { required: true } },
                        { field: "LastName", label: "Last Name:", validation: { required: true } },
                        { field: "Email", label: "Email:", validation: { required: true, email: true } }
                    ]
                }
            },{
                title: "Finish",
                content: '<h1>Thank you for registering</h1><br/><br/><br/><h3>Click "Done" to submit the form</h3>'
            }
        ]
    })
    </script>

Initialization from a <div> Element

When the Wizard is initialized from a <div> element any forms initialized via the Wizard configuration will behave as regular forms. If the Wizard contains multiple forms as part of its steps content and the requirement is to submit them separately a Submit button must be defined via the Form buttonsTemplate configuration option. It is advisable to handle the Form submit event and submit the form data via Ajax as otherwise the page will reload and the Wizard will return in its initial state.

<div id="wizard"></div>

    <script>
    $("#wizard").kendoWizard({
        validateForms: true,
        steps:[{
                title: "Start",
                content: '<h1>Start Registration</h1><br/><br/><br/><h3>Click "Next" to start filling-in the form</h3>'
            },{
                title: "Attendee Details",
                form: {
                    formData: {
                        FirstName: "",
                        LastName: "",
                        DateOfBirth: new Date(),
                    },
                    items: [
                        { field: "FirstName", label: "First Name:", validation: { required: true } },
                        { field: "LastName", label: "Last Name:", validation: { required: true } },
                        { field: "DateOfBirth", label: "Date Of Birth:", validation: { required: true} }
                    ],
                    buttonsTemplate: '<input type="submit" />',
                    submit:onSubmit
                }
            },{
                title: "User Details",
                form: {
                    formData: {
                        Username: "",
                        Email: ""
                    },
                    items: [
                        { field: "Username", label: "UserName:", validation: { required: true } },
                        { field: "Email", label: "Email:", validation: { required: true, email:true } }
                    ],
                    buttonsTemplate: '<input type="submit" />',
                    submit:onSubmit
                }
            },{
                title: "Finish",
                content: '<h1>Thank you for registering</h1><br/><br/><br/><h3>Click "Done" to complete the registration process</h3>'
            }
        ]
    })

    function onSubmit(event){
        event.preventDefault();
        //handle data submission
    }
    </script>

Separate Forms

Forms can be defined with the Wizard configuration (the build-in Form integration explained above), could be initialized directly as content of any step of the Wizard, or could be loaded as a content via Ajax call to a remote end-point. When Form is separately initialized (without using the Wizard configuration) or loaded as a remote content on any of the Wizard steps, there is no connection between the Wizard component and the Form itself. The Form will act as a separate component. For further details refer to the Content section.

See Also

In this article