Why note use and override the original validation entry point of Backbone? Here is the link to the documentation:
http://backbonejs.org/#Model-validate
And from the documentation:
validatemodel.validate(attributes, options)
This method is left undefined and you're encouraged to override it with any custom validation logic you have that can be performed in JavaScript.
By default save checks validate before setting any attributes but you may also tell set to validate the new attributes by passing {validate: true}
as an option.
The validate method receives the model attributes as well as any options passed to set or save. If the attributes are valid, don't return anything from validate; if they are invalid return an error of your choosing.
It can be as simple as a string error message to be displayed, or a complete error object that describes the error programmatically. If validate returns an error, save will not continue, and the model attributes will not be modified on the server. Failed validations trigger an "invalid" event, and set the validationError property on the model with the value returned by this method.
--
Also use and override this two functions:
validationErrormodel.validationError
The value returned by validate during the last failed validation.
isValidmodel.isValid()
Run validate to check the model state.