When using FormValidation with some server-side frameworks such as CakePHP , Symfony , Rails , Spring , etc, there is a relationship between the model name and the name
attribute of input.
For example, assuming that an user is modeled by User
class with firstName
, lastName
, username
, emails[]
properties.
Following the naming convention defined by these frameworks, the inputs in the form of adding new user might have the name attribute such as:
< input type = "text" name = "user[firstName]" />
< input type = "text" name = "user[lastName]" />
< input type = "text" name = "user[emails][]" />
or
< input type = "text" name = "user.lastName" />
< input type = "text" name = "user.firstName" />
< input type = "text" name = "user.emails[]" />
When using FormValidation to validate these kind of fields, you must wrap the field name between single or double quote as following:
$ ( form ). formValidation ({
framework : 'bootstrap' ,
fields : {
'user[firstName]' : {
validators : {
...
}
},
'user[lastName]' : {
validators : {
...
}
},
'user[emails][]' : {
validators : {
...
}
}
}
});
Below is a sample example:
< form id = "userForm" class = "form-horizontal" >
< div class = "form-group" >
< label class = "col-xs-3 control-label" > Full name</ label >
< div class = "col-xs-4" >
< input type = "text" class = "form-control" name = "user[firstName]" placeholder = "First name" />
</ div >
< div class = "col-xs-4" >
< input type = "text" class = "form-control" name = "user[lastName]" placeholder = "Last name" />
</ div >
</ div >
< div class = "form-group" >
< label class = "col-xs-3 control-label" > Username</ label >
< div class = "col-xs-5" >
< input type = "text" class = "form-control" name = "user[username]" />
</ div >
</ div >
< div class = "form-group" >
< label class = "col-xs-3 control-label" > Email address</ label >
< div class = "col-xs-5" >
< input type = "text" class = "form-control" name = "user[email]" />
</ div >
</ div >
< div class = "form-group" >
< div class = "col-xs-9 col-xs-offset-3" >
< button type = "submit" class = "btn btn-default" > Add</ button >
</ div >
</ div >
</ form >
< script >
$ ( document ). ready ( function () {
$ ( '#userForm' ). formValidation ({
framework : 'bootstrap' ,
icon : {
valid : 'glyphicon glyphicon-ok' ,
invalid : 'glyphicon glyphicon-remove' ,
validating : 'glyphicon glyphicon-refresh'
},
fields : {
'user[firstName]' : {
row : '.col-xs-4' ,
validators : {
notEmpty : {
message : 'The first name is required'
}
}
},
'user[lastName]' : {
row : '.col-xs-4' ,
validators : {
notEmpty : {
message : 'The last name is required'
}
}
},
'user[username]' : {
validators : {
notEmpty : {
message : 'The username is required'
},
stringLength : {
min : 6 ,
max : 30 ,
message : 'The username must be more than 6 and less than 30 characters long'
},
regexp : {
regexp : /^[a-zA-Z0-9_\.]+$/ ,
message : 'The username can only consist of alphabetical, number, dot and underscore'
}
}
},
'user[email]' : {
validators : {
notEmpty : {
message : 'The email address is required'
},
emailAddress : {
message : 'The input is not a valid email address'
}
}
}
}
});
});
</ script >