Способ сделать это с помощью jQuery - связать вызовы методов и избежать повторного выбора одного и того же элемента (ов) из DOM.
Изменить это:
$('input[name="firstName"]').parents('p').before(msg.firstName);
$('input[name="firstName"]').parents('p').prev('p').addClass('message error');
$('input[name="firstName"]').addClass('error');
$('input[name="firstName"]').after('<span class="check-error"></span>');
В это:
$('input[name="firstName"]')
.addClass('error')
.after('<span class="check-error"></span>')
.parents('p').before(msg.firstName)
.prev('p').addClass('message error');
Во-вторых, похоже, что вы просто выполняете одно и то же действие три раза с тремя разными значениями.Это предполагает цикл:
if(msg.validate === false) { // if there are validation errors...
$(['firstName', 'lastName', 'email']).each(function (i, e) {
if (msg[e] != '') {
$('input[name="' + e + '"]')
.addClass('error')
.after('<span class="check-error"></span>')
.parents('p').before(msg[e])
.prev('p').addClass('message error');
}
}
}