This works for logging into ExpressionEngine with ajax and showing the appropriate error, you would just modify the code where it checks for the error messages it returns to display to the user. You will need more conditions for the required fields.
function displayAjaxMessage(message, response_id)
{
if(typeof(response_id)==="undefined") response_id = "#form-message";
$(response_id).html(message);
$(response_id).show();
}
// using the jquery validate library
$("#register-form").validate({
rules: {
username: {
required: true,
email: true
},
password: {
required: true,
minlength: 5
},
password_confirm: {
required: true,
minlength: 5,
equalTo: "#register_confirm_password"
},
},
submitHandler: function() {
$.ajax({
url: $("#register-form").attr("action"),
data: $("#register-form").serialize(),
dataType: "html",
type: 'POST',
error: function (jxhr, msg, err)
{
$('#register-form').append('<li style="color:red">' + msg + '</li>');
},
success: function(html, textStatus, jqXHR)
{
if (html.match(/<title>Error<\/title>/))
{
var error = $(html).find('ul li:first').text();
if(error == "The username you chose is not available")
{
displayAjaxMessage("This email address is already registered", "#register-form-message");
} else {
displayAjaxMessage(error, "#register-form-message");
}
} else {
$("#register-form").hide();
displayAjaxMessage("Thanks! You can now login!", "#register-form-message");
}
}
});
}
});