Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

191
Visualizações
Controlar si se puede hacer clic en un enlace o no

Quiero controlar si se puede hacer clic en un enlace o si se debe mostrar un error (según el resultado de una llamada ajax).

 <a class="lnkCustomer" href="http://localhost/viewcustomer" target="_blank" data-customerno="237">View</a>

Llego al punto en el que puedo configurar el enlace como "permitido hacer clic":

 // Authorized anchor.data("authorized", true);

Sin embargo, cuando ejecuto este código, el enlace aún no se abre. Idealmente, una vez que se completa la llamada ajax, debería invocar el evento de clic. Creo que el problema está en esta línea.

 // Trigger Anchor anchor.click();

Este es el código completo:

 <script type="text/javascript"> $(".lnkCustomer").click(function(e) { var customerNo = $(this).data('customerno'); var anchor = $(this); // Check for authorized if (anchor.data("authorized")) { return true; } $.ajax( { url: 'http://localhost/checkcustomer', type: 'POST', dataType: 'json', data: { customerNo: customerNo }, cache: false, success: function (result) { if (result.success) { // Authorize anchor.data("authorized", true); // Trigger Anchor anchor.click(); } else { // Show a message in a alert or div alert('Not authorized'); } } }); // Default to false (Do not process anchor) return false; }); </script>

Notas: estoy usando class en lugar de id en el ancla porque tengo varios enlaces que activarán este evento. Sin embargo, como puede ver, esto no debería ser un problema ya que siempre me refiero al objeto individual:

 var anchor = $(this);
over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

No puede abrir una nueva pestaña sin las ventanas emergentes habilitadas o el clic del usuario para ese evento. No puede retrasarlo con promesas o invocar un evento de clic confiable.

Si desea verificar que un usuario pueda hacer clic en su enlace, realice la solicitud de API en la carga de la página y almacene el resultado.

O convierta su enlace en un botón con un proceso de dos clics para verificar y luego abrir.

over 4 years ago · Santiago Trujillo Relatório

0

Hay una respuesta simple: no puede activar un clic si no proviene de un evento confiable (cambio, clic, doble clic, mouseup, reinicio, envío).

Aquí está intentando activar un clic después de una solicitud AJAX (asíncrona), que no está permitida.

Más información aquí .

Como se sugirió, podría reemplazarlo por window.open(href, '_blank'); pero cuidado, también podría estar bloqueado por los parámetros del navegador.

over 4 years ago · Santiago Trujillo Relatório

0

Desafortunadamente, como mencionaron otros, href no se puede retrasar. Encontré una solución alternativa para adaptarse al escenario particular. Creé una página intermedia cuando el usuario hace clic en href. Esta página luego realiza la solicitud ajax (lado del servidor), si se valida, continúa y muestra el recurso. De lo contrario, muestra un error y permanece en la página intermedia.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda