Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rockrgo

função

Recommended Posts

Boa tarde pessoal...

 

criei uma função que oculta alguns campos de um formulário dependendo do valor de um outro campo. Está funcionando, porém se eu quiser usar ela em outro campo tenho que copiar a função toda e mudar algumas informações.

 

estou tendo um pouco de dificuldade em abstrair este código pois ainda falta um pouco mais de conhecimento da linguagem Se puderem me dar uma força eu agradeço!

 

a função é a seguinte:

            //Função que mostra os campos ocultos de acordo com o valor do select carro zero
            function mostraCamposCarroZero(){
                    var carroZero = $("#rblZero").val(); //Aqui devo abstrair
                    
                    $("#frmStep1 .form-group").each(function(){
                            
                            var dataVisible = $(this).data('visible');
                            
                            if(dataVisible !== undefined){

                                    if($.inArray(carroZero, dataVisible.rblZero) !== -1){//Aqui devo abstrair o rblZero

                                        $(this).css('display','block');
                                    }else{
                                        $(this).css('display','none');
                                    }
                                
                            }
                    });
            }

o dataVisible eu pego da seguinte data no campo que desejo ocultar

data-visible='{"rblZero": ["truewp","truewop"]}'

ou seja este campo só estará visivel se o valor do select #rblZero for igual a truewp ou truewop

 

minha maior dúvida está nesta parte

if($.inArray(carroZero, dataVisible.rblZero) !== -1)//como deixar dinâmico o acesso ao objeto

no caso de eu mudar o campo no data

data-visible='{"outroCampo": ["1","2"]}'

Compartilhar este post


Link para o post
Compartilhar em outros sites

            function mostraCamposCarroZero($elemento){
                    var carroZero = $elemento.val(); //Aqui devo abstrair

e ai na hora de chamar:

mostraCamposCarroZero($("#rblZero"));

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

 

Eae Willian blz cara.....então esta parte eu consegui fazer o problema esta mais embaixo na hora de acessar o objeto nesta parte.

if($.inArray(carroZero, dataVisible.rblZero) !== -1)//como deixar dinâmico o acesso ao objeto
este dataVisible.rblZero vai variar, ele pode ser dataVisible.campoUm ou dataVisible.campoDois...é nesta parte que não estou conseguindo abstrair tentei da seguinte forma mas sem sucesso
                            if(dataVisible !== undefined){
                                    var array = $.map(dataVisible, function(value, index) {
                                        return [index];
                                    });
                                    if($.inArray(valorSelect, dataVisible.array) !== -1){
                                        $(this).css('display','block');
                                    }else{
                                        $(this).css('display','none');
                                    }
                                
                            }
a var array retorna exatamente o nome da propriedade que desejo acessar mas não funcionou!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se te ajuda, mas vc pode acessar a propriedade usando variáveis:

var prop = 'rblZero';
var prop = 'campoUm';
var prop = 'campoDois';
dataVisible[prop];

Pois objetos javascript podem ser acessados tanto com . quanto com []

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu William funcionou aqui, mas ainda não está funcionando corretamente pois afeta todos os campos, mas isso eu ja sei como corrigir, vou ter que passar também como parâmetro a classe dos campos a serem ocultos, para não afetar os demais campos.

 

Valeu pela ajuda!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.