Jump to content

[SOLUCIONADO] Jquery y Prestashop 1.7.3.1


eridamega

Recommended Posts

Saludos a todos.

Estoy probando una función muy simple Jquery en la página del producto: Cuando cambie un valor de la lista desplegable me muestre un Alert ey no me funciona es como si la librería jquery no cargara Las consola me muestra este error Uncaught ReferenceError: $ is not defined, el codigo lo uso en product.tpl aca esta el producto 

<script>
	{literal}
		$('select').change(function(){
          alert("The text has been changed.");
          });
	{/literal}
</script>

 Cuando uso la función en /classic/assets/js/custom.js ni funciona la formula ni muestra el error en la consola

He hecho mi investigación pero no he dado con el asunto,  la línea de codigo esta en /classes/controller/AdminController.php como dice el foro . pero veo que no se carga.

Como hago para que cargue Jquery y que las funciones "funcionen"?

La idea del jquery es una ves funcione deseo que cuando la persona elija en el atributo NO, esconder la personalizacion del prodcuto ya que no he podido con esto 

Gracias por anticipado

Edited by eridamega (see edit history)
Link to comment
Share on other sites

hace 9 horas, gusman126 dijo:

Prueba a añadir la llamada al principio del tpl

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

 

Gracias Solucionado, ya carga el jquery.

PD, la función jquery funciona y me oculta el campo personalizacion, pero inediatamente vuelve a aparecer

Link to comment
Share on other sites

Tus repuestas me han ayudado mucho, punto de partida para hacer mis funciones jquery. Creo que la función trabaja correctamente.
Como la función se activa manualmente mediante la seleccion del NO en la lista desplegable yo espero 10 segundos y selecciono NO, y efectivamente se esconde el campo personalización adicionando un display none al css con jquery pero al segundo vuelve a aparecer. la función la tengo con windows on load para esperar que cargue todo 

$( window ).on( "load", function()...

Esta es la función completa y ese es el articulo donde trabaja la función. He aquí la página del ejemplo

$( window ).on( "load", function() {
	$('#group_6').change(function(){
		if($(this).val() == '76'){
			$("section.product-customization").css("display", "block");
                }
	});
	$('#group_6').change(function(){
		if($(this).val() == '77'){
			$("section.product-customization").css("display", "none");
		}
	});
});

Crees que si le inlcuyo un setTimeout() podria funcionar?

PD no he podido inlcuirla en un setTimeout() (mi conocmiento no me lo permite, he probado con alert y si pero no con el codigo de arriba)

Edited by eridamega (see edit history)
Link to comment
Share on other sites

Prueba con esto

$( window ).on( "load", function() {
	$('#group_6').change(function(){
		if($(this).val() == '76'){
			setTimeout(function() { $("section.product-customization").css("display", "block")}, 5000);
                }
	});
	$('#group_6').change(function(){
		if($(this).val() == '77'){
			setTimeout(function() { $("section.product-customization").css("display", "none")}, 5000);
		}
	});
});

Le he puesto 5 segundos, puede que sea demasiado, cambia a 3000 o 2000

Link to comment
Share on other sites

Pero debería funcionar mejor asi, lo he probado añadiendo el codigo a "console" , mira las imagenes adjuntas

Y una cosa, deja como combinación principal el SI o deberías añadir otro código

 

$(document).ready(function() {
    $(document).on('change', '#group_6', function(){
        if($(this).val() == '76'){
            setTimeout(function() { $("section.product-customization").css("display", "block")}, 5000);
        }
        if($(this).val() == '77'){
            setTimeout(function() { $("section.product-customization").css("display", "none")}, 5000);
        }   
         
        
    });
});

image.png.1f04bc0d83c555c6ea374fdefaf4525d.png

 

Por defecto NO , codigo adicional, comprueba que el valor del grupo 66 es NO y lo oculta

$(document).ready(function() {

if($('#group_6').val() == '77'){
            setTimeout(function() { $("section.product-customization").css("display", "none")}, 1000);
        } 
        
   ......  
         
        
    });
});

Por supuesto si el campo de TEXTO personalizable es obligatorio, recuerda añadir algo al campo

if($(this).val() == '77'){
            setTimeout(function() { 
            $("section.product-customization").css("display", "none");
            $('.textField1').val() == '-';
            }, 5000);
        } 

 

image.thumb.png.51b72f2204018bcbc5bf75b1f8d37b5a.png

Edited by gusman126 (see edit history)
  • Like 1
Link to comment
Share on other sites

  • eridamega changed the title to [SOLUCIONADO] Jquery y Prestashop 1.7.3.1
  • 1 year later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...