jQuery(function(){ jQuery("#ajaxform").validate({ rules: { sender: { required: true, minlength: 3 }, email: { required: true, email: true }, title: { required: true }, message: { required: true } }, messages: { sender: { required: 'Имя не должно быть пустым', minlength: 'Имя должно содержать минимум 3 символа' }, email: { required: 'Мыло не должно быть пустым', email: 'E-mail адрес должен быть корректен' }, title: { required: 'Тема не должна быть пустой' }, message: { required: 'Сообщение не должно быть пустым' } }, success: function(label) { label.html('OK').removeClass('error').addClass('ok'); setTimeout(function(){ label.fadeOut(500); }, 2000) }, submitHandler: function(form) { var dataString = jQuery(form).serialize(); var options = { type: "POST", data: dataString, dataType: "html", beforeSend: preSubmit, success: afterAjax, error: errorAjax, timeout: 7000 }; jQuery.ajax(options); // !!! Важно !!! // всегда возвращаем false, чтобы предупредить стандартные // действия браузера (переход на страницу form.php) return false; } }); //also - setup modal window with 'sending message' status jQuery('#sendingMessage').jqm({overlay: 75, overlayClass: 'sqlOverlay', modal: true}); }); function preSubmit(xhr) {jQuery('#sendingMessage').jqmShow();} function afterAjax(responseText, statusText) { var ret = eval("(" + responseText + ")"); switch (ret.code) { case -1: // field(s) missing setSendingMessageDIV(-1,0,'Вы заполнили не все поля формы!

Вернитесь к редактированию.'); break; case -2: // captcha test fail setSendingMessageDIV(-1,0,'Сервер сомневается - человек ли вы? :)

Попробуйте отправить сообщение еще раз.
На этот раз уделите особое внимание капча-тесту!'); break; case -3: // error while sending mail setSendingMessageDIV(-1,0,'Произошла внутренняя ошибка сервера в момент отправки e-mail сообщения.

Вернитесь к сообщению и попробуйте отправить его еще раз через 1 минуту.'); break; case 0: // OK - message sended by mail setSendingMessageDIV(1,0,'Ваше сообщение успешно отправлено, спасибо Вам за него!

Домой? Или, быть может, еще одно сообщение?'); break; default: // general error - timeout exceeding? errorAjax(); } } function errorAjax(statusText) { setSendingMessageDIV(-1,0,'Сервер не отвечает!

Вернитесь к сообщению и попробуйте отправить его еще раз через 1 минуту.'); } /* config new state for DIV sendingMessage */ /* parameters: */ //bkColor: -1(set Error color)\0(set normal(grey) color)\1(set OK color); foreground color will be also set accordingly //bkImage: 0 or miss(remove "ajax-wait" clock image)\any value(restore "ajax-wait" clock image) //txt: any string(new text for DIV)\miss or empty(restore standart message - "Please, wait...") function setSendingMessageDIV(bkColor,bkImage,txt){ sm=document.getElementById('sendingMessage'); switch (bkColor) { case -1: sm.style.backgroundColor='#f5d6d7';sm.style.color='#c81925'; break; case 0: sm.style.backgroundColor='#ebedf2';sm.style.color='#222'; break; case 1: sm.style.backgroundColor='#deefca';sm.style.color='#577530'; break;} if(bkImage) {sm.style.backgroundImage='';sm.style.paddingLeft=95+"px";sm.style.width=600+"px";} else {sm.style.backgroundImage='none';sm.style.paddingLeft=15+"px";sm.style.width=700+"px";} if(txt) {sm.innerHTML=txt;} else {sm.innerHTML='Ваше сообщение отправляется. Одну секунду...';} } /* prepare 'contactform' to new edition session */ /* set focus to 'sender' field (for non-logged user) or to 'title' (for logged user) */ /* parameters: */ //clear: 0 or miss(reserve field's current values)\any value(clear form) function resetForm(clear){ snd=document.getElementById('sender'); tlt=document.getElementById('title'); if(snd) {snd.focus();}else{tlt.focus();} if(clear){ document.getElementById('title').value=''; document.getElementById('message').value=''; if(document.getElementById('email')) {document.getElementById('email').value='';} if(snd) {snd.value='';} } }