Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] condicionar lista de productos

Estas en el tema de condicionar lista de productos en el foro de Javascript en Foros del Web. Hola a todos. Necesito saber cómo podría lograr que el proceso se parase cuando llegue al cupo máximo de productos seleccionados. Estoy utilizando los archivos ...
  #1 (permalink)  
Antiguo 24/05/2011, 12:24
 
Fecha de Ingreso: enero-2010
Mensajes: 76
Antigüedad: 14 años, 3 meses
Puntos: 1
condicionar lista de productos

Hola a todos.

Necesito saber cómo podría lograr que el proceso se parase cuando llegue al cupo máximo de productos seleccionados.

Estoy utilizando los archivos de Simplecart (http://simplecartjs.com) y sólo necesito parte del proceso que este programa ofrece y no tengo más remedio que modificarlo.

Para que lo veáis con más claridad, aquí os dejo el código completo a ver si alguien sabe o se le ocurre alguna solución.

Código:
<script type="text/javascript">
function tope()
{
var contador= document.getElementById("cantidad").innerHTML; //recoge cantidad de productos que lleva hasta el momento (correcto)
if (contador >=3) // limita sólo a 3 elementos seleccionados (correcto)
	{
    alert('Ya tienes tu lote completo con ' + contador + ' productos seleccionados.');
	// AQUÍ SE DEBERÍA DETENER EL PROCESO 
}
else
{
	alert('Continúa seleccionando productos'); // continúa normalmente agregando productos (correcto)
}   
}
</script>
El código del botón es el siguiente:

Código:
<li class="Cart_shelfItem" >
		<h2 class="item_name">producto-1</h2>
		<input type="text" class="item_quantity" value="1" readonly="readonly" /> // solo se debe poner un solo producto  (correcto)
		<input onclick="tope()" class="item_add" id="enviar" type="button"  value="Enviar"  /> //botón que desencadena el evento
</li>
El problema es que si llega al tope de 3 elementos debería detener el proceso y no dejarlo continuar.

En el sitio real tendrían que haber muchos botones (uno por cada producto) y debería bloquearlos según se haga clic en cualquiera de ellos ¿esto cómo se podría hacer?

Estoy probando con return false; pero el evento ya se ha desencadenado al hacer clic en el botón y no hace efecto, también he probado con
document.getElementById(enviar).disabled=true; pero en este caso el problema sería el ID, debería ser un ID general para que valiera según a qué botón le tocara, no se si me he explicado bien y espero que a alguien se le ocurra alguna solución porque no doy con ella.

En realidad lo único que necesito es un script que me permita agregar una cierta cantidad de productos a un div al estilo carro de compra, agregar y quitar cualquier producto sobre la marcha y ya está, ¿conocéis algo así de simple que se pueda descargar?

Saludos y muchas gracias.
  #2 (permalink)  
Antiguo 24/05/2011, 12:34
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: condicionar lista de productos

Puede pasarle la referencia a this a la función tope.

Código Javascript:
Ver original
  1. function tope(elemento)
  2. {
  3. var contador= document.getElementById("cantidad").innerHTML; //recoge cantidad de productos que lleva hasta el momento (correcto)
  4. if (contador >=3) // limita sólo a 3 elementos seleccionados (correcto)
  5.     {
  6.     alert('Ya tienes tu lote completo con ' + contador + ' productos seleccionados.');
  7.     elemento.disabled=true;
  8. }
  9. else
  10. {
  11.     alert('Continúa seleccionando productos'); // continúa normalmente agregando productos (correcto)
  12. }  
  13. }


Código HMTL:
Ver original
  1. <li class="Cart_shelfItem" >
  2.         <h2 class="item_name">producto-1</h2>
  3.         <input type="text" class="item_quantity" value="1" readonly="readonly" /> // solo se debe poner un solo producto  (correcto)
  4.         <input onclick="tope(this)" class="item_add" id="enviar" type="button"  value="Enviar"  /> //botón que desencadena el evento
  5. </li>
  #3 (permalink)  
Antiguo 25/05/2011, 02:41
 
Fecha de Ingreso: enero-2010
Mensajes: 76
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: condicionar lista de productos

Hola alexg88, ante todo muchas gracias por responder.

He probado el código que me pasas y sigue sin funcionar, el script sigue agregando productos ignorando la instrucción.

Supongo que donde pone (elemento) tendría que poner el nombre del elemento que deseo bloquear, en este caso debería ser el botón o la etiqueta <LI> donde está el botón ¿verdad?, pero desde luego como (elemento) no funciona.

También había pensado que se podría modificar con una variable las propiedades del botón para cambiar el estado "class=" de la siguiente forma.

Código:
function tope(elemento)
    {
    var contador= document.getElementById("cantidad").innerHTML; 
    var estado = " ";
    if (contador >=3)
        {
        alert('Ya tienes tu lote completo con ' + contador + ' productos seleccionados.');
        estado =" ";
    }
    else
    {
        alert('Continúa seleccionando productos'); 
        estado ='class="item_add"';
    }  
    }

</script>
y en el botón poner una variable que recoja el estado de class, por ejemplo
Código:
<input type="button" onclick="tope()"  AQUÍ VARIABLE id="enviar"  value="add to cart"  />
¿Podría funcionar de esta forma? y cómo debería poner en el botón el script para insertar la variable donde debe aparecer "class=" " o class="item_add".

Saludos
  #4 (permalink)  
Antiguo 25/05/2011, 03:10
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: condicionar lista de productos

Tienes que pasarle this a la función tope y veo que en el código que has puesto tú no se lo estabas pasando.
  #5 (permalink)  
Antiguo 25/05/2011, 03:30
 
Fecha de Ingreso: enero-2010
Mensajes: 76
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: condicionar lista de productos

Perdona pero no lo pillo, ¿te refieres a ponerlo de esta forma?

this.elemento.disabled=true;
this.disabled=true;

Lo siento pero no entiendo mucho de javascript, si es algo más laborioso te pediría que me especificaras un poco más cómo lo paso.

Muchas gracias y perdona las molestias.
  #6 (permalink)  
Antiguo 25/05/2011, 03:32
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: condicionar lista de productos

Me refiero en el evento onclick:

Código HTML:
Ver original
  1. <input type="button" onclick="tope(this)" class="enviar"  value="add to cart"  />
  #7 (permalink)  
Antiguo 25/05/2011, 04:36
 
Fecha de Ingreso: enero-2010
Mensajes: 76
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: condicionar lista de productos

Esto es otra cosa, ya funciona perfectamente.

Ahora voy a ver si los puedo activar a todos los desactivados en caso de quitar algún producto de la lista y que no llegue al tope máximo.

Muchas gracias, me has ayudado mucho y espero no tener que molestarte de nuevo

Etiquetas: lista, productos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:02.