You're right, 'parsley:form:validated'
would be only fired on whole form validation, and listening to parsley:field:validated
won't say much on whole form validation state.
It is not planned to implement this kind of behavior natively in Parsley, since Parsley does not store validation results and re-run each time all validators on all fields to be stateless. But you could achieve what you want this way (and if useful could be added in some examples section in the doc):
$('#form').parsley().subscribe('parsley:field:validated', function(fieldInstance){
if ($('#form').parsley().isValid())
$('#form').addClass('parsley-valid').removeClass('parsley-invalid');
else
$('#form').addClass('parsley-invalid').removeClass('parsley-valid');
});
Note: .subscribe() on a form would listen also all fields events. That way, every field validation could be listened for this form, and run a form.isValid() (that does not triggers events, to avoid infinite loops) to re-compute the global form state.
It's a choice because quite consuming but it should do the job (I did not tested the code above, could have typos)