Можно сделать так:
<form class="async">
<input type="phone" data-type="phone" require/>
<input type="email" data-type="email" require/>
</form>
<script>
$('form.async').submit(function(e){
e.preventDefault();
var $form=$(this);
if($form.find('[require]').toArray().some(function(node){
return !node.value.trim().lenght;
}))
alert('Заполните все обязательные поля');
if($form.find('[data-type]').each(function(){
/*
Тут осуществляется проверка корректности
заполнения поля в зависимости от аттрибута data-type.
В переменную "valid" записывается результат проверки
*/
this.classList[valid?'remove':'add']('invalid');
}).filter('.invalid').length)
return alert('Одно из полей заполненно некорректно');
/*
тут еще 0 или больше проверок чего-либо
и отправка запроса
*/
});
</script>