< form id = "togglingForm" method = "post" class = "form-horizontal" >
< div class = "form-group" >
< label class = "col-xs-3 control-label" > Full name < sup > *</ sup ></ label >
< div class = "col-xs-4" >
< input type = "text" class = "form-control" name = "firstName" placeholder = "First name" />
</ div >
< div class = "col-xs-4" >
< input type = "text" class = "form-control" name = "lastName" placeholder = "Last name" />
</ div >
</ div >
< div class = "form-group" >
< label class = "col-xs-3 control-label" > Company < sup > *</ sup ></ label >
< div class = "col-xs-5" >
< input type = "text" class = "form-control" name = "company"
required data-fv-notempty-message = "The company name is required" />
</ div >
< div class = "col-xs-2" >
< button type = "button" class = "btn btn-info btn-sm" data-toggle = "#jobInfo" > Add more info</ button >
</ div >
</ div >
<!-- These fields will not be validated as long as they are not visible -->
< div id = "jobInfo" style = "display: none; margin-bottom: 15px;" >
< div class = "form-group" >
< label class = "col-xs-3 control-label" > Job title < sup > *</ sup ></ label >
< div class = "col-xs-5" >
< input type = "text" class = "form-control" name = "job" />
</ div >
</ div >
< div class = "form-group" >
< label class = "col-xs-3 control-label" > Department < sup > *</ sup ></ label >
< div class = "col-xs-5" >
< input type = "text" class = "form-control" name = "department" />
</ div >
</ div >
</ div >
< div class = "form-group" >
< label class = "col-xs-3 control-label" > Mobile phone < sup > *</ sup ></ label >
< div class = "col-xs-5" >
< input type = "text" class = "form-control" name = "mobilePhone" />
</ div >
< div class = "col-xs-2" >
< button type = "button" class = "btn btn-info btn-sm" data-toggle = "#phoneInfo" > Add more phone numbers</ button >
</ div >
</ div >
<!-- These fields will not be validated as long as they are not visible -->
< div id = "phoneInfo" style = "display: none; margin-bottom: 15px;" >
< div class = "form-group" >
< label class = "col-xs-3 control-label" > Home phone</ label >
< div class = "col-xs-5" >
< input type = "text" class = "form-control" name = "homePhone" />
</ div >
</ div >
< div class = "form-group" >
< label class = "col-xs-3 control-label" > Office phone</ label >
< div class = "col-xs-5" >
< input type = "text" class = "form-control" name = "officePhone" />
</ div >
</ div >
</ div >
< div class = "form-group" >
< div class = "col-xs-9 col-xs-offset-3" >
< button type = "submit" class = "btn btn-default" > Validate</ button >
</ div >
</ div >
</ form >
< script >
$ ( document ). ready ( function () {
$ ( '#togglingForm' )
. formValidation ({
framework : 'bootstrap' ,
icon : {
valid : 'glyphicon glyphicon-ok' ,
invalid : 'glyphicon glyphicon-remove' ,
validating : 'glyphicon glyphicon-refresh'
},
fields : {
firstName : {
validators : {
notEmpty : {
message : 'The first name is required'
}
}
},
lastName : {
validators : {
notEmpty : {
message : 'The last name is required'
}
}
},
company : {
validators : {
notEmpty : {
message : 'The company name is required'
}
}
},
// These fields will be validated when being visible
job : {
validators : {
notEmpty : {
message : 'The job title is required'
}
}
},
department : {
validators : {
notEmpty : {
message : 'The department name is required'
}
}
},
mobilePhone : {
validators : {
notEmpty : {
message : 'The mobile phone number is required'
},
digits : {
message : 'The mobile phone number is not valid'
}
}
},
// These fields will be validated when being visible
homePhone : {
validators : {
digits : {
message : 'The home phone number is not valid'
}
}
},
officePhone : {
validators : {
digits : {
message : 'The office phone number is not valid'
}
}
}
}
})
. on ( 'click' , 'button[data-toggle]' , function () {
var $target = $ ( $ ( this ). attr ( 'data-toggle' ));
$target . toggle ();
if ( ! $target . is ( ':visible' )) {
// Enable the submit buttons in case additional fields are not valid
$ ( '#togglingForm' ). data ( 'formValidation' ). disableSubmitButtons ( false );
}
});
});
</ script >