Ir para conteúdo
Biel.

input type="radio"

Recommended Posts

Olá pessoal. Direto ao ponto. Nesta URL temos dois input type="radio" e alguns links.  Gostaria que ao clicar em um link qualquer o input type=""radio que marquei continuasse marcado . Segue o código que está na URL . Obrigado !

<style>
.box1{ margin-bottom:10px; }
.tete_label{ cursor:pointer; }
.box2{ display:none; }
input:checked ~ .box2{ display:block; }
</style>

<div class="box1">
    <input type="radio" name="item"   id="1"   />
      <label for="1" class="tete_label"  >Cores</label>
     <div class="box2">
            <a href="19_5a.php">verde</a><br>
            <a href="19_5b.php">azul</a><br>
            <a href="19_5c.php">violeta</a><br>
     </div>
   </div>
<!--  ------------------------------------------------  --> 
<div class="box1">
    <input type="radio" name="item"  id="2"   />
    <label for="2" class="tete_label" >Carros</label>
     <div class="box2">
            <a href="19_6a.php">fiat</a><br>
            <a href="19_6b.php">palio</a><br>
            <a href="19_6c.php">corsa</a><br>
     </div>
   </div>

...

<script>
var  teste1 = document.getElementById('1').checked=true;	
function func_1(){
}
</script>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom você poderia usar a URl como base

JS:

var pathname = location.pathname;
var radioSelected = pathname.includes('19_5') ? '1' ; '2';

document.getElementById(radioSelected).checked=true;

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

 Cara mostre códigos aqui, apenas argumentar, não é o objetivo desse forum! Mostre sua implementação ou analise o problema atual!

a lógica passei faz sentido, então está dando algum erro suba no servidor pra eu poder ajudar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Wanderval fiquei animado. Veja alguns teste que fiz. Obrigado 

<div class="box1">
    <input type="radio" name="item"   id="1"   />
      <label for="1" class="tete_label"  >Cores</label>
     <div class="box2">
            <a href="19_5a.php" onClick="func_2()">verde</a><br>
            <a href="19_5b.php" onClick="func_2()">azul</a><br>
            <a href="19_5c.php" onClick="func_2()">violeta</a><br>
     </div>
   </div>

<p id="p1"></p>   

<script>
function func_2(){
// var x = location.href;  // <- teitei assim
var x = location.pathname;
//var radioSelected = x.includes('19_5a.php') ? '1'; // <- teitei assim
document.getElementById('p1').innerHTML=x; 
document.getElementById('1').checked=true; // <- teitei assim
//document.getElementById(radioSelected).checked=true; // <- teitei assim
}
</script>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo que colocou ai o código que fiz você copiou errado faltando a segunda condição e ainda modificou a validação! '19_5' para '19_5a.php'.

-Outro ponto nesse ex você apenas mostrou um código relacionado a rádio e no anterior no servidor existem 2.

-Outro ponto você está confundindo as coisas o método func_2 não esta fazendo nada! essa execução de código deveria ocorrer no carregamento da pagina, assim lendo a url e setando radio correto, nessa lógica atual após você clicar em um link você é redirecionado e tudo e carregado novamente que é o esperado, dessa forma essa chamada de método nunca surtira efeito.

 

Uma pergunta porque quer fazer isso? Acho que essa resposta é importante

 

Código:

var radioSelected = pathname.includes('19_5') ? '1' ; '2';

Atual:

// var radioSelected = x.includes('19_5a.php') ? '1'; // <- teitei assim

Não entendo sua insistência em um valor fixo, o que espera conseguir de diferente se sua lógica sempre for '1'? Logo sempre será o primeiro radio!

document.getElementById('1').checked=true; // <- teitei assim

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 horas atrás, wanderval disse:

ainda modificou a validação! '19_5' para '19_5a.php'.

O link que postei foi 19_5a  e não 19_5 

 

2 horas atrás, wanderval disse:

Outro ponto nesse ex você apenas mostrou um código relacionado a rádio e no anterior no servidor existem 2.

Fiz algumas modificações para tentar resolver o problema de alguma forma. 

Você me apresentou uma  ideia de como resolver o problema. Entendi sua ideia e fiz vários testes para encontrar a solução; não conseguir !   É desnecessário postar novamente todo o código na integra CSS + dois input type="radio" + javascript  uma vez que o mesmo já foi postado  na integra neste fórum e . Nesta URL . Se eu conseguisse fazer a coisa funcionar com um input type="radio" ,  conseguiria fazer funcionar com 2,3,4 ou mais inputs.

 

2 horas atrás, wanderval disse:

Não entendo sua insistência em um valor fixo, o que espera conseguir de diferente se sua lógica sempre for '1'?

Não existe valor fixo. É como disse: Fiz algumas modificações para tentar resolver o problema de alguma forma. Se eu conseguisse fazer a coisa funcionar com um input type="radio" ,  conseguiria fazer funcionar com 2,3,4 ou mais inputs.

Wanderval,  a solução virá rapidamente. Vamos resolver este problema juntos? Estou animado !

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 14/02/2021 at 16:59, Biel. disse:

O link que postei foi 19_5a  e não 19_5 

 

Fiz algumas modificações para tentar resolver o problema de alguma forma. 

Você me apresentou uma  ideia de como resolver o problema. Entendi sua ideia e fiz vários testes para encontrar a solução; não conseguir !   É desnecessário postar novamente todo o código na integra CSS + dois input type="radio" + javascript  uma vez que o mesmo já foi postado  na integra neste fórum e . Nesta URL . Se eu conseguisse fazer a coisa funcionar com um input type="radio" ,  conseguiria fazer funcionar com 2,3,4 ou mais inputs.

 

Não existe valor fixo. É como disse: Fiz algumas modificações para tentar resolver o problema de alguma forma. Se eu conseguisse fazer a coisa funcionar com um input type="radio" ,  conseguiria fazer funcionar com 2,3,4 ou mais inputs.

Wanderval,  a solução virá rapidamente. Vamos resolver este problema juntos? Estou animado !

 

 

 

Bom Biel eu não faria dessa forma, eu havia lhe perguntado qual é o motivo do seu objetivo, e havia dito que a resposta é importante!

Motivo é: Se você é um estudante de tecnologia existem outras formas de obter esse resultado pensando em aplicações, agora se você é apenas uma pessoa que estuda por hobby existe uma forma sim de contornar a situação usando GET e parâmetros na URL.

 

<div class="box2">
  <a href="19_5a.php?category=1">verde</a><br>
  <a href="19_5b.php?category=1">azul</a><br>
  <a href="19_5c.php?category=1">violeta</a><br>
</div>

PHP:

<?php
	$categoryId = $_GET['category'];
?>

JS:

var categoryId = <?php echo json_encode($categoryId); ?>;
document.getElementById(categoryId).checked=true;

para aplicações existe o conceito de SPA (Single Page Aplication), isso foi um dos problemas no passado para remover a dependência de tecnologias de back-end como o PHP. então basicamente o que você esta tentando fazer é reproduzir um cenário que era comum alguns anos atras mas hoje, deveria ser evitada.

 

Mas quando se fala de paginas e não aplicações sim é usado o php, mas sendo bem especifico frameworks php

vou deixar um exemplo de código muito básico que mostra um pouco do que seria o SPA, mas evidente que frameworks como vue.js, react.js são mais indicados, atualmente é usado o conceito de rotas nesses frameworks e não apenas nomes de arquivos e diretórios.

 

ex:

 

HTML

<html>
  <head>Router test</head>
  <body>
    <ul id="route-links">
      <li route="/" page="home">Home</li>
      <li route="/Contact" page="contact">Contact</li>
      <li route="/Product" page="product">Products</li>
      <li route="/Category" page="category">Category</li>
    </ul>

    <div class="page" id="home">
      home
    </div>

    <div class="page" id="contact">
      contato
    </div>

    <div class="page" id="product">
      product
    </div>

    <div class="page" id="category">
      category
    </div>

    <script src="./script.js"></script>
  </body>
</html>

JS:

// Handler Route Redirect
function activeRouteLinkListening() {
  const link = document.getElementById("route-links");

  link.addEventListener("click",function(e) {
    let id = e.target.attributes[0].value;
    let page = e.target.attributes[1].value;
    
    setCurrentState(id, page);
  });
}

function setCurrentState(id, page) {
  history.pushState({id, page}, `Selected: ${id}`, `#${id}`)
  displayCurrentPage(page);
}

// Handler Default Route
function displayCurrentPage(historyPage) {
  if(!history.state) {
    setDefaultState();
  }
  const pages = Array.from(document.getElementsByClassName('page'));
  const statePage = historyPage || history.state.page;

  pages.forEach(page => {
    page.style.display = statePage !== page.id
      ? 'none'
      : 'block';
  });
}

function setDefaultState() {
  history.replaceState({id: '/', page: 'home'}, 'Default state', './');
}

function activePopStateListening() {
  window.addEventListener('popstate', e => {
    displayCurrentPage(e.state && e.state.page);
  });
}

function init() {
  displayCurrentPage();
  activeRouteLinkListening();
  activePopStateListening();
}

init();

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Biel.
      Olá pessoal. Ao digitar um texto qualquer no input e pressionar submit o valor do atributo href é alterado temporariamente. Como alterar permanentemente no corpo do documento  o valor do atributo href, digitando um nome de link qualquer no campo input e em seguida submit ?
      <!DOCTYPE html> <html> <head> <style> input { width: 100%; font-size: 20px; } textarea { width: 100%; font-size: 16px; height: 200px; } .class88 { margin-top: 50px; padding: 10px; max-width: 100px; } </style> </head> <body> <h2> alterar valor do atributo href</h2> digite um texto qualquer <input type="text" class="class42" value=""> <a id="linkToChange" href="teste5.php" class="class43"></a> <input type="submit" class="class88" value="enviar" onclick="alterarHref()"> <script> function alterarHref() { // pega o valor da class42 var valorDaclass42 = document.querySelector('.class42').value.trim(); // altera o valor do atributo href para o valorDaclass42 sugerido document.querySelector('.class43').setAttribute('href', valorDaclass42); console.log("Href alterado:", valorDaclass42); } </script> </body> </html>  
    • Por Biel.
      Olá pessoal. BannerA está funcionando normalmente. Como usar mesmo script para bannerB e bannerC.
      <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Banner Aleatório</title> <style> /* Estilos opcionais para o banner */ #divPai { margin: auto; border: 2px solid red; } #bannerA { width: 240px; height: 480px; overflow: hidden; position: relative; } #bannerA img { width: 100%; height: auto; position: absolute; top: 0; left: 0; transition: 1.5s ease-in; } #bannerA img.active { opacity: 1; } </style> </head> <body> <div id="divPai"> <div id="bannerA" class="bannerA"> <a href="link1"><img src="image1.jpg" alt="Imagem 1"></a> <a href="link2"><img src="image2.jpg" alt="Imagem 2"></a> <a href="link3"><img src="image3.jpg" alt="Imagem 3"></a> </div> <!-- <hr> <div id="bannerB" class="bannerB"> <a href="link4"><img src="image4.jpg" alt="Imagem 4"></a> <a href="link5"><img src="image5.jpg" alt="Imagem 5"></a> <a href="link6"><img src="image6.jpg" alt="Imagem 6"></a> </div> <hr> <div id="bannerC" class="bannerC"> <a href="link7"><img src="image7.jpg" alt="Imagem 7"></a> <a href="link8"><img src="image8.jpg" alt="Imagem 8"></a> <a href="link9"><img src="image9.jpg" alt="Imagem 9"></a> </div> --> </div> <hr> <script> document.addEventListener("DOMContentLoaded", function() { // var banner = document.getElementById("divPai"); // var images = banner.querySelectorAll("img"); var images = document.querySelectorAll("#bannerA img"); // Função para exibir uma imagem aleatória function showRandomImage() { // Escolhe aleatoriamente um índice de imagem var randomIndex = Math.floor(Math.random() * images.length); // Define todas as imagens como ocultas images.forEach(function(img) { img.style.display = "none"; }); // Exibe a imagem aleatória images[randomIndex].style.display = "block"; } // Chama a função inicialmente e define um intervalo para exibir novas imagens a cada 3 segundos showRandomImage(); setInterval(showRandomImage, 1000); // makeSliderKind('.bannerA', 1000); // makeSliderKind('.bannerB', 2000); // makeSliderKind('.bannerC', 3000); }); </script> </body> </html>  
    • Por Biel.
      Olá pessoal. O banner abaixo está funcionando e o link acompanha o banner, até aqui tudo ok ! Quero muito fazer uma transição suave entre uma image e outra, colocando as propiedades e valores no css ou diretamente no javascript e nada de propiedades e valores no html através do style . Se possível coloque no código somente o que precisa . Obrigado!
      <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Banner</title> <style> /* Estilos opcionais para o banner */ .banner { width: 240px; height: 480px; overflow: hidden; position: relative; } .banner img { width: 100%; height: auto; position: absolute; top: 0; left: 0; transition: 1.5s ease-in; } .banner img.active { opacity: 1; } </style> </head> <body> <div class="banner" id="banner"> <a href="link1" class="ggg"><img src="image1.jpg" alt="Imagem 1"></a> <a href="link2" class="ggg"><img src="image2.jpg" alt="Imagem 2"></a> <a href="link3" class="ggg"><img src="image3.jpg" alt="Imagem 3"></a> <a href="link4" class="ggg"><img src="image4.jpg" alt="Imagem 4"></a> <a href="link5" class="ggg"><img src="image5.jpg" alt="Imagem 5"></a> </div> <script> document.addEventListener("DOMContentLoaded", function() { var banner = document.getElementById("banner"); var images = banner.querySelectorAll("img"); // Função para exibir uma imagem aleatória function showRandomImage() { // Escolhe aleatoriamente um índice de imagem var randomIndex = Math.floor(Math.random() * images.length); // Define todas as imagens como ocultas images.forEach(function(img) { img.style.display = "none"; }); // Exibe a imagem aleatória images[randomIndex].style.display = "block"; } // Chama a função inicialmente e define um intervalo para exibir novas imagens a cada 3 segundos showRandomImage(); setInterval(showRandomImage, 3000); }); </script> </body> </html>  
       
    • Por Biel.
      Olá pessoal. O banner abaixo está funcionando normalmente, mas a transição entre uma imagem e outra está um tanto truculenta. Quero deixar suave. Como resolver isso? Obrigado !
      <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>transition suave entre uma image e outra</title> <style> #banner { width: 240px; height: 480px; overflow: hidden; position: relative; } #bannerGG { width: 100%; height: auto; position: absolute; top: 0; left: 0; opacity: 0; transition: opacity 1s ease-in-out; } /* #tete:active { opacity: 1; } */ </style> </head> <body> <div id="banner"> <img class="bannerGG" src="imagem1.png" alt="Image 1"> <img class="bannerGG" src="imagem2.png" alt="Image 2"> <img class="bannerGG" src="imagem3.png" alt="Image 3"> <img class="bannerGG" src="imagem4.png" alt="Image 4"> <img class="bannerGG" src="imagem5.png" alt="Image 5"> </div> <script> const image = document.querySelectorAll('.bannerGG'); const banner = document.getElementById('banner'); function showRandomImage() { const randomIndex = Math.floor(Math.random() * image.length); const randomImage = image[randomIndex]; const imgElement = document.createElement('img'); imgElement.src = randomImage.src; const linkElement = document.createElement('a'); linkElement.appendChild(imgElement); banner.innerHTML = ''; banner.appendChild(linkElement); } showRandomImage(); setInterval(showRandomImage, 3000); </script> </body> </html>  
    • Por Biel.
      Olá pessoal. O banner abaixo está funcionando, mas quero que o link do banner venha da tag a  e não do javascript . Como resolver? 
      <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Mostrar link do banner que está na tag a</title> <style> #banner { width: 240px; height: 480px; overflow: hidden; position: relative; } .banner-img { width: 100%; height: 100%; object-fit: cover; position: absolute; /* opacity: 0; */ transition: opacity 0.5s ease-in-out; } .banner-link { display: block; width: 100%; height: 100%; } </style> </head> <body> <div id="banner"> <a href="link147"><img class="banner-img" src="imagem1.png" alt="Image 1"></a> <a href="link254"><img class="banner-img" src="imagem2.png" alt="Image 2"></a> <a href="link350"><img class="banner-img" src="imagem3.png" alt="Image 3"></a> <a href="link462"><img class="banner-img" src="imagem4.png" alt="Image 4"></a> <a href="link538"><img class="banner-img" src="imagem5.png" alt="Image 5"></a> </div> <script> const images = document.querySelectorAll('.banner-img'); const banner = document.getElementById('banner'); function showRandomImage() { const randomIndex = Math.floor(Math.random() * images.length); const randomImage = images[randomIndex]; const imgElement = document.createElement('img'); imgElement.src = randomImage.src; imgElement.alt = randomImage.alt; imgElement.classList.add('banner-img'); const linkElement = document.createElement('a'); // linkElement.appendChild(imgElement); linkElement.href = randomImage.href; linkElement.classList.add('banner-link'); linkElement.href = "page" + (randomIndex + 1) + ".html"; // Link para cada imagem linkElement.appendChild(imgElement); banner.innerHTML = ''; banner.appendChild(linkElement); } showRandomImage(); setInterval(showRandomImage, 1000); </script> </body> </html> Resolvido,  Obrigado a todos !
×

Informação importante

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