Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

249
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!