хм.. гетом отправляешь форму.. может стоит постом отправлять?
но в любом случае у jQuery есть функции $.get и $.post (+есть $.json).
твой подход - проверять на .submit - тоже можно но геморнее.
var hasError = false; //по дефолту ошибки нет, вводим переменную
var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i); //проверка e-mail
var nameVal = $("#clientName").val();
if(nameVal == '') {
$("#nameError").show(); //делаем невидимый span или p с текстом ошибки под нужным инпутом с id="nameError", если поле с id="clientName" не заполнено - показываем
hasError = true;
} //если инпут с id="clientName" не заполнено, то проверяющая переменная становится true
var emailFromVal = $("#clientEmail").val();
if(emailFromVal == '') {
$("#emailError1").show();
hasError = true;
} else if(!pattern.test(emailFromVal)) {
$("#emailError2").show();
hasError = true;
} //проверка паттерна emaila (функция test)
//итд итп, потом проверяем, если hasError=false отправляем ($.post), иначе не отправляем