Ir para conteúdo

POWERED BY:

Arquivado

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

dinhografo

Selecionar um elemento acima com javascript

Recommended Posts

Observem no HTML que a CATEGORIA está desabilitada e as SUB-CATEGORIAS estão selecionáveis.

O que eu preciso é um seguinte:

Quando se clicar em uma SUB-CATEGORIA além de inserir o seu valor no campo hidden inserir também o valor da CATEGORIA na frente deste valor.

 

Código HTML:

<input type="hidden" name="all_cat" id="all_cat" value="">
<div class="form_cat">
  <label>
    <input type="radio" disabled="disabled" name="category[]" id="category_1" value="10,0" class="checkbox" onclick="fetch_packages('10',this.form,'')"> <strong>Agitos</strong>
  </label>
</div>
<div class="form_cat" style="margin-left:15px;">
   <label>
     <input type="radio" name="category[]" id="category_1" value="32,0" class="checkbox" onclick="fetch_packages('32',this.form)"> Bares e Choperias
   </label>
</div>
<div class="form_cat" style="margin-left:15px;">
   <label>
     <input type="radio" name="category[]" id="category_1" value="31,0" class="checkbox" onclick="fetch_packages('31',this.form)"> Boates e Casas De Show
   </label>
</div>

 

Isto está dentro de um form e que tem o valor recuperado por AJAX para um campo tipo hidden ao selecionar um radio qualquer.

 

Parte de código Ajax que recupera o valor do campo radio selecionado e grava no valor no campo hidden:

function fetch_packages(pkgid,form,pri)
{
                var total = 0;
                var t=0;
                //var c= form['category[]'];
                var dml = document.forms['propertyform'];
                var c = dml.elements['category[]'];
                var cats = document.getElementById('all_cat').value;
                document.getElementById('all_cat').value = "";
                document.getElementById('all_cat_price').value = 0;
                document.getElementById('cat_price').innerHTML = 0;
                for(var i=0;i<c.length;i++){
                               c[i].checked?t++:null;
                               if(c[i].checked)
                               {             
                                               var a = c[i].value.split(",");
                                              
                                               document.getElementById('all_cat').value += a[0]+"|";/*RECUPERA O VALOR DO CAMPO*/
                                              
                                              
                                               document.getElementById('all_cat_price').value = parseFloat(document.getElementById('all_cat_price').value) + parseFloat(a[1]);
                                              
                                               document.getElementById('cat_price').innerHTML = parseFloat(document.getElementById('all_cat_price').value);


                               }
                              
                                               document.getElementById('total_price').value =  parseFloat(document.getElementById('all_cat_price').value) + parseFloat(document.getElementById('feture_price').innerHTML) +  parseFloat(document.getElementById('pkg_price').innerHTML);


                                              
                                               document.getElementById('result_price').innerHTML =  parseFloat(document.getElementById('all_cat_price').value) + parseFloat(document.getElementById('feture_price').innerHTML) +  parseFloat(document.getElementById('pkg_price').innerHTML);
                }
                var cats = document.getElementById('all_cat').value ;
               
                  document.getElementById("packages_checkbox").innerHTML="";
                  document.getElementById("process2").style.display ="";
                 
                               if (window.XMLHttpRequest)
                  {// code for IE7+, Firefox, Chrome, Opera, Safari
                  xmlhttp=new XMLHttpRequest();
                  }
                               else
                  {// code for IE6, IE5
                  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
                  }
                               xmlhttp.onreadystatechange=function()
                  {
                    if (xmlhttp.readyState==4 && xmlhttp.status==200)
                               {
                               document.getElementById("packages_checkbox").innerHTML =xmlhttp.responseText;;
                               document.getElementById("process2").style.display ="none";
                               }
                  }
                  url = "<?php echo get_template_directory_uri(); ?>/monetize/place/ajax_price.php?pckid="+cats
                  xmlhttp.open("GET",url,true);
                  xmlhttp.send();                            
}

 

Acredito que essa modificação de dará na linha document.getElementById('all_cat').value += a[0]+"|";/*RECUPERA O VALOR DO CAMPO*/. O problema é que eu não sei como selecionar o primeiro elemento acima do radio selecionado com o atributo ‘disabled="disabled"’ ou outro qualquer do campo radio da categoria.

 

Alguém pode me ajudar por favor!

Desde já eu agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro amigo fabricioserralvo o parentNode foi uma dica importante, mas observe o HTML que os INPUTs são filhos de uma LABEL e netos de uma DIV. A DIV por sua vez é IRMÃ de um outra DIV acima(onde está o input que eu preciso pegar o valor).

Observe que o <input type="radio" disabled="disabled"... está dentro de uma LABEL.

Eu adicionei a classe "categ" na div que contém a categoria agora ela está assim <div class="form_cat categ">.

O que eu preciso é subir dois elementos pais(div e label) alcançar o primeiro irmão acima com a classe CATEG e descer dois elementos para pegar o valo do input.

tentei fazer "c.parentNode.parentNode.nextSibling" como exemplificado em http://forum.imasters.com.br/topic/326629-dom-elemento-irmo-do-pai-ns/ mas não deu certo.

 

Sendo eu uma topeira em javascript agradeço sua ajuda e atenção.

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.