Backbone 1.1 slightly changed how validation works :
Model validation is now only enforced by default in save — not in set unless the
{validate:true}
option is passed. Model validation now fires an "invalid" event instead of "error".
Try
song1.set({track: 1}, {validate: true});
and change your listener to
this.on("invalid", function(model, error) {
console.log(error);
});
And a demo http://jsfiddle.net/nikoshr/z2p9T/