Jump to content

Hacer que funcion Jquery actué solo en artículos de la misma categoria


eridamega

Recommended Posts

Hola Saludos a todos

Tengo una función jquery que limita los caracteres permitidos en la personalización del producto.

En la Categoría A con id 1 el limite de personalización para los productos son 18 caracteres y en la Categoría B con id 2 el limite con 25 caracteres

la función validar() esta incluida en el submit del tpl personalizacion que se inlcuye en el tpl product, como haria para que en la cat A me limite a 18 y en la B a 25

Por por adelantado gracias

function validar(){
	
	//Almacenamos los valores
	nombre=$('.product-message').val();
	
   //Comprobamos la longitud de caracteres
	if (nombre.length<18){
		return true;
	}
	else {
		alert('Maximo 18 Caracteres');
		return false;
	}
}

 

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

En 1.6  declaras una variable en el tpl para usarla en el javascript

{addJsDef combinations=$combinations}

 

Otra opcion aunque no muy elegante colocas un input hide con el valor y lo lees directo

<input type="hidden" id="tunombre" value="depende de tu if">

 

var maxLongitud = $('#').val();

 

Edited by jgamio
more info (see edit history)
Link to comment
Share on other sites

hace 16 minutos, jgamio dijo:

En 1.6  declaras una variable en el tpl para usarla en el javascript


{addJsDef combinations=$combinations}

 

Otra opcion aunque no muy elegante colocas un input hide con el valor y lo lees directo


<input type="hidden" id="tunombre" value="depende de tu if">

 


var maxLongitud = $('#').val();

 

Gracias por responder.

@jgamio manejo poco el tema y realmente no comprendo como hacerlo, en cual tpl coloco la variable  o como haria con el input.

Disculpa la verdad no manejo mucho el tema

Link to comment
Share on other sites

hace 14 minutos, jgamio dijo:

que version de prestashop tienes

Perdón se me había olvidado ese gran dato, uso PS 1.7.3.1 

Estuve gogleando y encontré esto,  es adicionar al body una variable con el id de la categoria.  
En mi pobre conocimiento pienso obtener el dato de la categoria con un if si la categoria es 1 limitar 18 si la categoria 2 limtar 25 etc. 

La función iria en el trabajaría el prodcuto, pero no lo se hacer. si puedes sugerirme una idea para dummies lo agradecería en el alma 

var urlTopCat = jQuery("#breadcrumb_wrapper li:nth-child(3) > a").attr("href");
var urlTopCat = urlTopCat.split('dominio.com/');
urlTopCat = urlTopCat[1].split('-');
jQuery("body").addClass("category-top-"+urlTopCat[0]);
Link to comment
Share on other sites

A ver lo que quieres es conocer en que categoria esta el producto  para cambiar el 18 que es el maximo de caracteres a el que te interese

 

si es correcto necesitas algo que te indique que categoria estas utilizando eso es todo, ahora como lo hagas es como se te haga mas facil de entender.

 

el codigo que me muestras lee el breadcumb y lo coloca en una clase, colocarlo en un div o input escondido es casi lo mismo son maneras de que sepas el id de la categoria eso es todo

 

lo que yo te decia era lo siguiente colocas en el tpl un div o input escondido

 

<input type="hidden" id="productMainCategoryId" value="{$product.id_category_default}"

listo en el javascript solo llamas al input

var productMainCategoryId = $('#productMainCategoryId').val();

 

hay ya tienes la categoria

 

 

Link to comment
Share on other sites

En 26/4/2018 a las 5:51 PM, jgamio dijo:

A ver lo que quieres es conocer en que categoria esta el producto  para cambiar el 18 que es el maximo de caracteres a el que te interese

 

si es correcto necesitas algo que te indique que categoria estas utilizando eso es todo, ahora como lo hagas es como se te haga mas facil de entender.

 

el codigo que me muestras lee el breadcumb y lo coloca en una clase, colocarlo en un div o input escondido es casi lo mismo son maneras de que sepas el id de la categoria eso es todo

 

lo que yo te decia era lo siguiente colocas en el tpl un div o input escondido

 

<input type="hidden" id="productMainCategoryId" value="{$product.id_category_default}"

listo en el javascript solo llamas al input

var productMainCategoryId = $('#productMainCategoryId').val();

 

hay ya tienes la categoria

 

 

@jgamio No sabes lo eternamente agradecido que estoy. Por fin pude solucionar lo que necesitaba, hice un script lo dejare por si alguien lo necesita o lo puede mejorar.

php Adicione el input hidden con la variable 

<input type="hidden" id="productMainCategoryId" value="{$product.id_category_default}"

jquery

var productMainCategoryId = $('#productMainCategoryId').val();


if (productMainCategoryId == 23 || productMainCategoryId == 27 || productMainCategoryId == 28) {
    $("small.float-xs-right").text('Limite 20 caracteres');

    function validar() {
        //Almacenamos los valores
        limiteCaracter = $('.product-message').val();

        //Comprobamos la longitud de caracteres
        if (limiteCaracter.length < 21) {
            //alert('La formula funciono. texto agregado');
            return true;

        } else {
            $("small.float-xs-right").html("<span style='color: #ff0000;'>Se excede el limite permitido</span>");
            //alert('La formula funciono, pero te pasaste de los caracteres');

            return false;
        }

    }

} else if (productMainCategoryId == 29 || productMainCategoryId == 30 || productMainCategoryId == 31) {
    $("small.float-xs-right").text('Limite 18 caracteres');

    function validar() {
        //Almacenamos los valores
        limiteCaracter = $('.product-message').val();

        //Comprobamos la longitud de caracteres
        if (limiteCaracter.length < 19) {
            //alert('La formula funciono con 18. texto agregado');
            return true;

        } else {
            $("small.float-xs-right").html("<span style='color: #ff0000;'>Se excede el limite permitido</span>");
            //alert('La formula funciono, pero te pasaste de los caracteres');

            return false;
        }

    }
} else if (productMainCategoryId == 26) {
    $("small.float-xs-right").text('Limite 25 caracteres');

    function validar() {
        //Almacenamos los valores
        limiteCaracter = $('.product-message').val();

        //Comprobamos la longitud de caracteres
        if (limiteCaracter.length < 26) {
            //alert('La formula funciono con 25. texto agregado');
            return true;

        } else {
            $("small.float-xs-right").html("<span style='color: #ff0000;'>Se excede el limite permitido</span>");
            //alert('La formula funciono, pero te pasaste de los caracteres');

            return false;
        }

    }
} else if (productMainCategoryId == 24) { 
    $("small.float-xs-right").text('Limite 15 caracteres');

    function validar() {
        //Almacenamos los valores
        limiteCaracter = $('.product-message').val();

        //Comprobamos la longitud de caracteres
        if (limiteCaracter.length < 16) {
            //alert('La formula funciono con 15. texto agregado');
            return true;

        } else {
            $("small.float-xs-right").html("<span style='color: #ff0000;'>Se excede el limite permitido</span>");
            //alert('La formula funciono, pero te pasaste de los caracteres');

            return false;
        }

    }
} else if (productMainCategoryId == 33) { 
    $("small.float-xs-right").text('Limite 28 caracteres');

    function validar() {
        //Almacenamos los valores
        limiteCaracter = $('.product-message').val();

        //Comprobamos la longitud de caracteres
        if (limiteCaracter.length < 29) {
            //alert('La formula funciono con 15. texto agregado');
            return true;

        } else {
            $("small.float-xs-right").html("<span style='color: #ff0000;'>Se excede el limite permitido</span>");
            //alert('La formula funciono, pero te pasaste de los caracteres');

            return false;
        }

    }
}

Muchisimas gracias 

Lo ultimo para que quede al 100% seria que el texto que adiciona al comprobar el id, por ejemplo el texto por defecto es 18 caracteres. el script lo cambia por limte 25 caracteres pero cuando seleciono otro atributo de una lista desplegable vuelve a poner 18 caracteres como podría evitar eso??

sbir.gif.be6d4ba1e36dac16b19edc2053d30666.gif

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

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...