<
html
>
<
head
>
<
link
rel
=
"
stylesheet
"
href
=
"
https://cdnjs.cloudflare.com/ajax/libs/milligram/1.3.0/milligram.min.css
"
/>
<
link
rel
=
"
stylesheet
"
href
=
"
/vendors/formvalidation/dist/css/formValidation.min.css
"
/>
head
>
<
body
>
<
form
id
=
"
demoForm
"
method
=
"
POST
"
>
...
form
>
<
script
src
=
"
https://cdnjs.cloudflare.com/ajax/libs/es6-shim/0.35.3/es6-shim.min.js
"
>
script
>
<
script
src
=
"
/vendors/formvalidation/dist/js/FormValidation.min.js
"
>
script
>
<
script
src
=
"
/vendors/formvalidation/dist/js/plugins/Milligram.min.js
"
>
script
>
<
script
>
document
.
addEventListener
(
'DOMContentLoaded'
,
function
(
e
)
{
FormValidation
.
formValidation
(
document
.
getElementById
(
'demoForm'
)
,
{
fields
:
{
...
}
,
plugins
:
{
milligram
:
new
FormValidation
.
plugins
.
Milligram
(
)
,
...
}
,
}
)
;
}
)
;
script
>
body
>
html
>
vendors
directory. You might need to change the path depending on where you place them on the server.
fv-stacked-form
class to the
form
element such as:
<
form
class
=
"
fv-stacked-form
"
>
...
form
>
.row
element. But in the stacked form below, every field will be placed inside our own
.fv-row
container.
rowSelector
option to help the plugin determine the field containers as following:
milligram
:
new
FormValidation
.
plugins
.
Milligram
(
{
rowSelector
:
function
(
field
,
ele
)
{
// field is the field name
// ele is the field element
return
'.fv-row'
;
}
// Or you can just simply pass it as a string:
// rowSelector: '.fv-row',
}
)
,
firstName
and
lastName
fields are placed inside
.column-25
containers. Meanwhile, the
city
,
state
and
zipcode
fields can be found inside the
.column-20
containers.
rowSelector
option:
milligram
:
new
FormValidation
.
plugins
.
Milligram
(
{
rowSelector
:
function
(
field
,
ele
)
{
// field is the field name
// ele is the field element
switch
(
field
)
{
case
'firstName'
:
case
'lastName'
:
return
'.column-25'
;
case
'city'
:
case
'state'
:
case
'zipcode'
:
return
'.column-20'
;
default
:
return
'.row'
;
}
}
}
)
,