Vinicius Espindola Postado Outubro 1, 2010 Denunciar Share Postado Outubro 1, 2010 (editado) 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 Abril 18, 2011 por Vinicius Espindola Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Vinicius Espindola
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:
Neste plugin, o modelo da função está assim: E a função execute() está assim: Onde, em module, está assim: Onde a função input, está assim: 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: É 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. De qualquer forma, para quem deseja vizualizar o conteúdo completo do plugin que criei para minha empresa, segue abaixo: Editado por Vinicius EspindolaLink para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
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.