Free tip : Embrace the callback functions
function checkUsername() {
$.post('php/availability.php',{username: $('#username').val()}, function(usernamedata){
if(usernamedata.exists){
$("#username").css('background-image','url(images/in-use.png)');
$("#registration-send").attr('disabled','disabled');
}else{
$("#username").css('background-image','none');
$("#registration-send").removeAttr('disabled');
} }, 'JSON'); }
You don't need to set some hidden field. The best way is to handle that in your success callback itself.
Also you can write similar code for checking email address atomicity.
UPDATE::
var correctUsername=0,correctEmail=0;
function checkUsername() {
$.post('php/availability.php',{username: $('#username').val()}, function(usernamedata){
if(usernamedata.exists){
$("#username").css('background-image','url(images/in-use.png)');
$("#registration-send").attr('disabled','disabled');
correctUsername=0;
}else{
$("#username").css('background-image','none');
correctUsername=1;
if(correctEmail==1){
$("#registration-send").removeAttr('disabled');
}
} }, 'JSON'); }
Repeat the similar code for email where you will set correctEmail=1
and removeAttr
if correctUsername==1