Método auxiliar form submit
by gsguma
JavaScript
/**
* Metodo auxiliar para processar envio de formularios
*
* Exemplo de chamada: $('#idForm').submitForm('#divMensagem', '#divAguarde');
*
* @param elMessage Identificador do elemento para mostrar a mensagem do resultado [formato: '#idElemento' ou '.idElemento']
* @param elLoading Identificador do elemento para mostrar enquanto processa o envio do form [formato: '#idElemento' ou '.idElemento']
*
* @return $this retorna o proprio obj
*/
$.fn.formSubmit = function(elMessage, elLoading) {
var form = $(this);
var elMessage = $(elMessage);
var elLoading = $(elLoading);
var params = form.serialize();
var action = form.attr('action');
var method = form.attr('method');
event.preventDefault();
$.ajax({
cache : false,
dataType : 'json',
type : method,
url : action,
data : params,
beforeSend : function() {
elLoading.show();
$('input[type=submit]', form).attr('disabled', true);
},
complete : function() {
elLoading.hide();
$('input[type=submit]', form).attr('disabled', false);
},
success : function(data) {
if (data.error === true)
{
elMessage.html(data.message);
var elm = $('input[name=' +data.element+ ']').exists() ? $('input[name=' +data.element+ ']') : $('textarea[name=' +data.element+ ']');
elm = elm.exists() ? elm : $('select[name=' +data.element+ ']');
elm.focus();
}
else if (data.error === false)
{
elMessage.html(data.error);
form.resetForm();
}
else
{
elMessage.html('Ops! Ocorreu um problema com o script');
}
}
});
...