Foros del Web » Programando para Internet » Javascript »

anular enlace href si no se seleciona opcion

Estas en el tema de anular enlace href si no se seleciona opcion en el foro de Javascript en Foros del Web. Hola no se si es posible hacerlo de la manera que lo tengo estructurado se trata de un enlace href que te lleva a una ...
  #1 (permalink)  
Antiguo 12/02/2015, 08:22
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
anular enlace href si no se seleciona opcion

Hola no se si es posible hacerlo de la manera que lo tengo estructurado se trata de un enlace href que te lleva a una pagina pero antes debes selecionar una opcion si no as selecionado una opcion se deberia anular el href avisando de que eliga opcion ejemplo:


Código HTML:
Ver original
  1. <input type='radio' >
  2. <label>preferidos</label>
  3.  
  4. <input type='radio' >
  5. <label>todos</label>
  6.  
  7. <a href="http://www.example.com/candidatos">ver candidatos</a>

osea que si no ha selecionado una de estas opciones que muestre un alert, se que se podria hacer llamando a una funcion javascript en el href por ejemplo href="javascript:comprobarSelecion" y entonces con location redireciono, pero quiero saber si ahi alguna manera de hacerlo de la manera que lo planteo.
saludos

Última edición por azaz; 12/02/2015 a las 08:33
  #2 (permalink)  
Antiguo 12/02/2015, 10:10
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: anular enlace href si no se seleciona opcion

Al momento de producirse el evento click en el enlace, verifica si hay elementos marcados en el documento; de no ser así, evita la redirección con el método preventDefault y muestras el mensaje de alerta, caso contrario, dejas que se realice la redirección.

Código Javascript:
Ver original
  1. document.querySelector("a").addEventListener("click", function(event){
  2.     if (!document.querySelectorAll(":checked").length){
  3.         event.preventDefault();
  4.         alert("Debes de marcar una opción");
  5.     }
  6. }, false);

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 12/02/2015 a las 10:18 Razón: Simplificar
  #3 (permalink)  
Antiguo 12/02/2015, 11:28
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: anular enlace href si no se seleciona opcion

Hola Alexis88 lo estoy probando pero no funciona si el enlace contiene una ruta en su href o eso me parece una ruta absoluta.Saludos
  #4 (permalink)  
Antiguo 12/02/2015, 12:01
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: anular enlace href si no se seleciona opcion

Tiene que funcionar, quizá estás colocando el código JavaScript en la cabecera del documento, causando que este cargue antes de que carguen los elementos del documento. Coloca dicho código luego del último elemento de tu documento y antes de la etiqueta </body>.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 12/02/2015, 12:16
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: anular enlace href si no se seleciona opcion

Hola no no lo coloque al final pero no me funciona. Sólo me funciona un enlace que lo tengo con href='#'.
Voy hacer algunas pruebas haber que pasa.
Gracias y saludos.
  #6 (permalink)  
Antiguo 12/02/2015, 12:26
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: anular enlace href si no se seleciona opcion

Tenias razón lo tenia en mal sitio no cargando me algunos enlaces. Gracias nuevamente, saludos.
  #7 (permalink)  
Antiguo 12/02/2015, 13:25
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: anular enlace href si no se seleciona opcion

Hola perdona que regrese, me estaba funcionando bien lo que pasa que inserte mas enlaces en la pagina y solo funciona en el primero, como podria hacer que tubiera efecto en todos los enlaces de la web menos en uno de ellos.

codigo html
Código HTML:
Ver original
  1. <input type='radio' >
  2. <label>preferidos</label>
  3.  
  4. <input type='radio' >
  5. <label>todos</label>
  6.  
  7. <a href="http://www.example.com/candidatos">ver candidatos</a>
  8. <a href="http://www.example.com/requisitos">ver requisitos</a>
  9. <a href="http://www.forosdelweb.com/f13/">regresar</a>


quedria que afectara a todos los enlaces del documento menos al de regresar, me puedes ayudar saludos.
  #8 (permalink)  
Antiguo 12/02/2015, 13:37
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: anular enlace href si no se seleciona opcion

Vale con la propiedad querySelectorAll afecta a todos los enlaces del documento, pero como puedo evitar que afecte al enlace de regresar.
saludos.

Ya lo solucione con la propiedad querySelectorAll y recorriendo todos los enlaces y luego capturo el id con event.target.id para anular si es el enlace de regresar.
saludos

Última edición por azaz; 12/02/2015 a las 14:05
  #9 (permalink)  
Antiguo 12/02/2015, 14:17
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: anular enlace href si no se seleciona opcion

Sería más práctico si asignaras una misma clase a los enlaces que quieres que se vean afectados, luego, en lugar de tomar a los enlaces por el tipo de elemento, o sea <a>, lo harías por dicha clase.

Código Javascript:
Ver original
  1. [].forEach.call(document.querySelectorAll(".clase"), function(enlace){
  2.     enlace.addEventListener("click", function(event){
  3.         if (!document.querySelectorAll(":checked").length){
  4.             event.preventDefault();
  5.             alert("Debes de marcar una opción");
  6.         }
  7.     }, false);    
  8. });

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: anular, enlace, funcion, href, input, opcion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:53.