Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

270
Vistas
¿Cómo forzar la desactivación del modal o un botón?

Cuando mis usuarios son de solo lectura, quiero limitar algunos accesos. En este caso, la posibilidad de editar notas. No puedo explicar por qué con este código, todavía puedo abrir mi nota cuando el usuario es de solo lectura.

 if(codeParam == '{{ $baby->readOnlyCode }}' ) { //I am in side this code $("a.btn, .btn-link, #logNote, pre, .btn").click(function() { return false; }); }

https://mybabies.app/baby/797b808a-e8c6-4a83-acf4-14ebe1f776b1?code=rithys4k

Haga clic en el cuadro de notas, verá que de alguna manera aún puede activarse.

ingrese la descripción de la imagen aquí

Incluso intenté agregar el cheque y devolver falso en showModal()

 function showModal(val, type, logId ) { console.log("val, type, logId",val, type, logId); if(codeParam == '{{ $baby->readOnlyCode }}' ) { return false; } ...

o intenté prevenirPredeterminado

 if(codeParam == '{{ $baby->readOnlyCode }}' ) { $("a.btn, .btn-link, #logNote, pre, .btn").click(function(e) { e.preventDefault(); return false; }); }

Si viste lo que me perdí, por favor házmelo saber.

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

El problema que tiene es que está adjuntando un segundo detector de eventos que solo devuelve falso y evita el valor predeterminado, pero el primer detector de eventos que muestra el modal todavía está adjunto.

Es decir,

 $("a.btn").click(function(e) { alert("Hello World!"); }); $("a.btn").click(function(e) { return false; // this does nothing to the previously attached event listener });

Soluciones posibles:

Al inspeccionar su código, tiene algunas opciones:

 $(document).on('show.bs.modal', '#noteModal', function (e) { // move the check for the param here if(codeParam == 'rithys4k' ) { return false; } });

O: use atributos disabled en los botones/enlaces cuando esté en modo de solo lectura.

Para brindarle más información: $().click() es realmente solo una abreviatura de addEventListener en el evento de clic

about 4 years ago · Juan Pablo Isaza Denunciar

0

Tienes que usar on method con suffix en jQuery, en jQuery Docs

 const clickAction = (e) => { // do anything } $('.btn, pre').on('click.go', clickAction);

Use off para eliminar eventos , off jQuery Docs

 $('body').off("click.go", ".btn, pre"); // OR $('body').off("click.go", ".btn, pre", clickAction); // OR $('.btn, pre').off("click.go");
about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede depurar el orden de los eventos de esta manera: $._data($("#logNote").get(0), "events"); . Los nuevos eventos van hasta el final y se ejecutan de arriba a abajo. En su caso, todo lo que necesita hacer es recordar la función de activación y eliminarla/agregarla cuando sea necesario, por ejemplo:

 const cbToggleNoteModal = () => $("#toggleNoteModal").click(); // you have to store the cb in a variable $("#logNote").click(cbToggleNoteModal); // to disable the cb, just de-register the callback $("#logNote").off("click", cbToggleNoteModal); // and register it back when you need it $("#logNote").click(cbToggleNoteModal);
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda