Ir para conteúdo
Fórum Script Brasil
  • 0

JQuery - Desafio Perigoso - Receber o parâmetro na função


Vinicius Espindola

Pergunta

Pessoal,

Este desafio está tão perigoso para mim. Desenvolvi um plugin para minha empresa.

Para chamar um plugin, basta informar o código abaixo:

$(this).validateAudience({module: 'specific', specific: 'dateAll["#nome_da_id"]'});
Neste plugin, o modelo da função está assim:
$.fn.validateAudience = function(settings) {        
        if(settings) {
            try {
                //currying - techniques javascript.
                execute( add(settings));
                return true;
            } catch(error) {
                cancel(error.description);
            }
        } else {
            alert("Unable to call validateAudience. It's need specific parameter.");
        }
    };
E a função execute() está assim:
var execute = function(settings) {
        module[settings.module].apply( this, arguments);
    }
Onde, em module, está assim:
var module = {
        specific: function(settings) {
            input[settings.specific].apply( this, arguments );
        }
Onde a função input, está assim:
var input = {
        dateAll: function(parameter) {
            /* é aqui que quero que a função receba o parametro */
        },
    }
Alguém tem idéia de como faço que a função dateAll receba o parâmetro informado a partir no primeiro código na tela, como abaixo:
$(this).validateAudience({module: 'specific', specific: 'dateAll["#nome_da_id"]'});
É claro que, se descrever apenas "dateAll" ao invés de "dateAll["#nome_da_id"]", como abaixo, o código funciona. Mas quero que ela receba o parametro.
$(this).validateAudience({module: 'specific', specific: 'dateAll["#nome_da_id"]'});
De qualquer forma, para quem deseja vizualizar o conteúdo completo do plugin que criei para minha empresa, segue abaixo:
(function ($) {
    $.fn.validateAudience = function(settings) {        
        if(settings) {
            try {
                execute( add(settings));
                return true;
            } catch(error) {
                cancel(error.description);
            }
        } else {
            alert("Unable to call validateAudience. It's need specific parameter.");
        }
    };
    
    /**
     * Cancels this function (validateAudience) and redirect in $URL_DEFAULT
     */
    var cancel = function(description) {
        $("form").attr("action","#");  //modify in attr 'form' to garant
        $.blockUI({ message: '<h1><img src="'+$URL_DEFAULT+'img/ajax.gif" width="16" height="16" />   Desculpe. Houve um erro interno no sistema. O erro é ' + description + '  Redirecionando...</h1>', timeout: 2000 });
        //window.location.replace($URL_DEFAULT);
    }
    
    /**
     * Start of the function to execute validateAudience.
     */
    var execute = function(settings) {
        module[settings.module].apply( this, arguments); //or (this, arguments).
    }
    
    /**
     * Extends and defines options.
     */
    var add = function(settings) {
        var defaults = {
            module: 'audience',     //it's group
            specific: null,        //it's specific
        }
        settings = $.extend(defaults, settings); // write on the default options with the send options.
        return settings;
    }
    
    var module = {
        audience: function() {
            input.federalUnit();
            input.companyName();
            input.telephoneAuthor();
            input.typeRegistrationPerson();
            input.connect0800();
            input.resultApuration();
            input.qualityApuration();
            input.dateAll();
            input.timeAll();
            input.accordType();
            input.payment();
            input.paymentMaskAll();
            input.paymentPriceKeypress();
            input.paymentCodeKeypress();
            input.paymentPriceBlur();            
            input.advocacyPresent();
            input.contestationBy();
            input.formApresentation();
            input.lawyerPunctual();
            input.lawyerDelayTime();
        }, 
        specific: function(settings) {
            input[settings.specific].apply( this, Array.prototype.slice.call( arguments, 0 ) );
        }
    }
    
    
    var input = {

        federalUnit: function() {
            $("#uf,#odc").change( function() {
                    if(($("#uf").val() != "") && ($("#odc").val() != "")) {                                   
                        $().showDiv({divs: 'relation-entity', ids: 'uf,odc,page', urls: 'http://localhost/preposto/ajax/get-list-entity.php'});
                        $().showDiv({divs: 'relation-office-advocacy', ids: 'uf,odc,page', urls: 'http://localhost/preposto/ajax/get-list-office-advocacy.php'});
                        $().showDiv({divs: 'relation-employer', ids: 'uf', urls: 'http://localhost/preposto/ajax/get-list-employer.php'});
                    }
                }
            );
        },
        
        companyName: function() {
            $("#empresa").change( function() {
                if($(this).val() == "Outros - Especificar") {
                    $("#empresa_especificar").val('').removeAttr("readonly").attr("class", "validate[required] input-default").bestupper();
                } else {
                    $("#empresa_especificar").val('').attr("readonly", "readonly").unbind();
                }
            });
            
        },
        
        telephoneAuthor: function() {
            $("#telefone_autor").mask("(99) 9999-9999", {placeholder: " "});
        },
        
        typeRegistrationPerson: function() {
            $('#tipo_registro').change( function() { 
                $(this).alterClassValue(); 
            });
        },
        
        connect0800: function() {
            $("#conseguiu_ligar_0800").change( function() { 
                $value = $(this).val();
                if(($value == "não FOI NECESSARIO") || ($value == "")) {
                    $("#bloc-0800 :input").not('#conseguiu_ligar_0800').attr("disabled", "disabled").attr("class", "input-default").val('');
                } else if ($value == "não") {
                    $("#periodo_ligacao_0800").removeAttr("disabled").attr("class", "validate[required] input-default").val('');
                    $("#bloc-0800 :input").not('#conseguiu_ligar_0800,#periodo_ligacao_0800').attr("disabled", "disabled").attr("class", "input-default").val("");
                } else {
                    $("#bloc-0800 :input").not('#conseguiu_ligar_0800').removeAttr("disabled").attr("class", "validate[required] input-default").val('');
                }
            });
        },
        
        resultApuration: function() {            
            $("#resultado_apuracao").change( function() {
                var $value = $(this).val();
                if($value != "Sem Apuracao"){
                    $("#bloc-apuration :input").not('#resultado_apuracao').removeAttr("disabled").attr("class", "validate[required] input-default").val('');
                } else {
                    $("#bloc-apuration :input").not('#resultado_apuracao').attr("disabled", "disabled").attr("class", "input-default").val('');
                }
            });    
        },
        
        qualityApuration: function() {
            $("#qualidade_apuracao").change( function() {
                var $value = $(this).val();
                if($value == "Ruim") {
                    $("#justificativa_apuracao").removeAttr("disabled").attr("class", "validate[required] input-default").val("");
                } else {
                    $("#justificativa_apuracao").attr("disabled", "disabled").attr("class", "input-default").val("");
                }
            });            
        },
        
        dateAll: function(parameter) {
            /* é aqui que quero que a função receba o parametro*/
        },
        
        timeAll: function() {
            /*
            primeiro each de todas as ids. e criar um novo array caso elas existam. se possível, com parametro.
            */
            $("#horario_audiencia_inicio,#horario_audiencia_final,#hora_proxima_audiencia,#hora_convolada,#hora_retirada_pauta,#hora_leitura_sentenca").mask("99:99", {placeholder: " "});
        },
        
        
        accordType: function() {        
            $("#tipo_acordo").change( function() {
                $value = $(this).val();
                if(($value == "Sem Acordo") || ($value == "Processo Extinto") || ($value == "Sentenca Improcedente") || ($value == "Retirada da Pauta") || ($value == "Leitura de Sentenca") || ($value == "Concluso (Vara Civel)")) {
                    $("#bloc-payment :input").attr("disabled", "disabled").attr("class", "input-default").val("");
                    if($value == "Retirada da Pauta"){
                        $("#data_retirada_pauta,#hora_retirada_pauta").removeAttr("disabled").val("");
                    }
                    if($value == "Leitura de Sentenca") {
                        $("#data_leitura_sentenca,#hora_leitura_sentenca").removeAttr("disabled").val("");
                    }
                } else {
                    $("#bloc-payment :input").removeAttr("disabled").attr("class", "input-default").val("");
                    $("#pagamento,#autorizado_por").attr("class", "validate[required] input-default").val("");
                    $("#bloc-payment :input[id^='codigo']").attr("class", "validate[optional,custom[onlyNumber]] input-default").val("");
                    $("#bloc-payment :input[id^='valor']").attr("class", "validate[optional,custom[price]] input-default").val("");
                }
            });    
        },
        
        payment: function() {            
            $("#pagamento").change( function() {
                $value = $(this).val();
                if($value == "SIM") {
                    $("#bloc-payment :input").not("#pagamento").removeAttr("disabled").attr("class", "input-default").val("");
                    $("#bloc-payment :input[id^='codigo']").not("#pagamento").attr("class", "validate[optional,custom[onlyNumber]] input-default").val("");
                    $("#bloc-payment :input[id^='valor']").not("#pagamento").attr("class", "validate[optional,custom[price]] input-default").val("");
                    $("#autorizado_por").attr("class", "validate[required] input-default").val("");
                } else {
                    $("#bloc-payment :input").not("#pagamento").attr("disabled", "disabled").attr("class", "input-default").val("");
                }
            });    
        },
        
        paymentMaskAll: function() {
            /*
            fazer um each function. com parameters, se possível.
            */
            $("#valor_dinheiro,#valor_cancelamento,#valor_credito,#valor_retificacao,#proposta_oi,#proposta_cliente").maskMoney({symbol: "R$", decimal: ",", thousands: "."});    
        },
        
        paymentPriceKeypress: function() {
            $("#bloc-payment :input[id^='valor_']").keypress( function(index) {
                $id = $(this).attr("id");
                $split = $id.split("_");
                $valueId = "codigo_"+$split[1];
                if($(this).val() == "R$ 0,00") {
                    $("#bloc-payment :input[id^='"+$valueId+"']:first").attr("class", "validate[optional,custom[onlyNumber]] input-default");
                } else {
                    $("#bloc-payment :input[id^='"+$valueId+"']:first").attr("class", "validate[required,custom[onlyNumber]] input-default");    
                }
            });    
        },
        
        paymentCodeKeypress: function() {
            $("#bloc-payment :input[id^='codigo_']").keypress( function(index) {
                $id = $(this).attr("id");
                $split = $id.split("_");
                $valueId = "valor_"+$split[1];
                $("#bloc-payment :input[id^='"+$valueId+"']:first").attr("class", "validate[required,custom[onlyNumber]] input-default");    
            });    
        },
        
        paymentPriceBlur: function() {
            $("#bloc-payment :input[id^='valor_']").blur( function() {
                $id = $(this).attr("id");
                $split = $id.split("_");
                $valueId = "codigo_"+$split[1];
                if($(this).val() == "R$ 0,00") {
                    $(this).val("");
                    $("#bloc-payment :input[id^='"+$valueId+"']:first").attr("class", "validate[optional,custom[onlyNumber]] input-default");
                }
            });    
        },
        
        advocacyPresent: function() {            
            $("#advogado_presente").change( function() {
                $value = $(this).val();
                if($value == "SIM") {
                    $("#bloc-office-advocacy :input").not("#advogado_presente,#contestacao_apresentada_por,#forma_apresentacao").removeAttr("disabled").attr("class","validate[required] input-default").val("");
                } else{
                    $("#bloc-office-advocacy :input").not("#advogado_presente,#contestacao_apresentada_por,#forma_apresentacao").attr("disabled","disabled").attr("class","input-default").val('');
                    $("#contestacao_apresentada_por,#forma_apresentacao").attr("class","validate[required] input-default").val('');
                }
            });    
        },
        
        contestationBy: function() {        
            $("#contestacao_apresentada_por").change( function() {
                $value = $(this).val();
                if($value == "Contestacao não apresentada") {
                    $("#forma_apresentacao").val("Contestacao não apresentada");
                } else {
                    $("#forma_apresentacao").val("");
                }
            });                
        },
        
        formApresentation: function() {        
            $("#forma_apresentacao").change( function() {
                $this = $(this);
                $value = $(this).val();
                if($value == "Contestacao não apresentada") {
                    if($("#contestacao_apresentada_por").val() != "Contestacao não apresentada") {
                        $this.val("");
                    }
                } else {
                    if($("#contestacao_apresentada_por").val() == "Contestacao não apresentada") {
                        $this.val("Contestacao não apresentada");
                    }
                }
            });    
        },
        
        lawyerPunctual: function() {
            $("#advogado_pontual").change( function() {
                $value = $(this).val();
                if($value == "SIM") {
                    $("#tempo_atraso").val("Sem Atraso");
                } else {
                    $("#tempo_atraso").val("");
                }
            });                
        },
        
        lawyerDelayTime: function() {
            $("#tempo_atraso").change( function() {
                $value = $(this).val();
                if($value == "Sem Atraso") {
                    if($("#advogado_pontual").val() != "Sem Atraso") {
                        $(this).val("");
                    }
                } else {
                    if($(this).val != "") {
                        if($("#advogado_pontual").val() == "SIM") {
                            $(this).val("Sem Atraso");
                        }
                    }
                }
            });    
        },
        
    }

})(jQuery);



/**
 * Onload document default.
 */
$(document).ready(function (){
    
    $(this).validateAudience({module: 'specific', specific: 'dateAll["teste"]'});
    
});

Editado por Vinicius Espindola
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...