Your problem is completely related to your implementation.
When the page loads, the following happens: your form works successfully the first time you submit ...
var validator = form.validate({ rules: { Author: "required", etc....
Then, since you added it again to the submit handler, it is reinitialized here ...
form.live('submit', function (e) { e.preventDefault();
... which breaks it down to the next dispatch.
All you have to do is initialize it once (including all parameters) and not inside the send handler ...
$('#CommentsForm').validate({ rules: { Author: "required", etc....
Refer to the source code for these official demos .
EDIT:
Again, you do not need a submit handler, as it interferes with your form submission.
In other words, your check is operational, but when you click send, your external function of the send handler will completely return to its original state, so it is not surprising that the check then starts to fail.
As I mentioned in my original comments, the Validation plugin has a built-in submit handler to handle everything, including your ajax.
Delete it all completely ...
form.live('submit', function (e) { ....
Then in your validate() function, you simply add a submit handler according to the plugin documentation specified as the second option ..
$('#CommentsForm').validate({ rules: { Author: "required", /// etc.... }, submitHandler: function(form) { /// put all your ajax and such in here } });