Hola, buenas tardes,
Tengo la siguiente duda, les explico.
Tengo 5 productos distintos:
Producto A, B, C, D, E.
y tengo que armar 3 paquetes con esos productos, uno con 3 productos de los anteriores mencionados, otro con 5 y otro con 10.
Hasta ahí, no tengo ningún problema, todo bien con el siguiente código:
Código Javascript
:
Ver original// Añadir productos a paquete
// Definir que tipo de paquete es (3, 5, 10)
var miPaquete = new Array();
var elemento;
var pUnidad = 0;
function customPaqs(paq, id, producto){
if(miPaquete.length < paq){
miPaquete.push(producto);
document.getElementById("myAdds").innerHTML = miPaquete;
} else { alert("Máximo de artículos permitidos."); }
}
Este botón es con el qué los agrego a la función:
Código PHP:
<input type="button" name="add" onclick="customPaqs(<?php echo $kit . ", " , $rowSelectProductsPaq['id_producto'] . ", '" . $rowSelectProductsPaq['prod_producto'] . "'"; ?>);" value="Add">
Siendo,
Código PHP:
$kit = El paquete que voy a armar (3, 5 o 10)
$rowSelectProductsPaq['id_producto'] = el identificador del producto
$rowSelectProductsPaq['prod_producto'] = el nombre del producto
Entonce, con esto agrego 3, 5 o 10 productos dependiendo el paquete que vaya a armar.
Ahora, necesito incorporar la siguiente regla:
En el paquete 3, ningún producto puede exceder más de 2 unidades por producto, es decir,
Paquete de 3 -> - No puedo tener 3 unidades de un mismo producto en este paquete. Máximo por unidad 2
Paquete de 5 -> No puedo tener 4 unidades de un mismo producto en este paquete. Máximo por unidad 3
Paquete de 10 -> No puedo tener 4 unidades de un mismo producto en este paquete. Máximo por unidad 3
Intenté usar la siguiente función para identificar cuántas veces se repite un producto en el arreglo
elemento = miPaquete.indexOf(id);
Código Javascript
:
Ver originalvar miPaquete = new Array();
var repetido = 0;
var pUnidad = 0;
function customPaqs(paq, id, producto){
miPaquete.push(producto);
document.getElementById("myAdds").innerHTML = miPaquete;
if(paq == 3){ pUnidad = 2; }
if(paq == 5){ pUnidad = 3; }
if(paq == 10){ pUnidad = 4; }
if(miPaquete.length < paq){
for(var i = 0; i < miPaquete.length; i++){
if( miPaquete.indexOf(producto, i) === -1){
repetido = 0;
} else if( miPaquete.indexOf(producto, i) > -1 ) {
repetido++;
}
}
alert("El producto " + producto + " se repite " + repetido + " veces en el array");
} else { alert("Máximo de artículos permitidos."); }
}
Sin embargo, no realiza la función correctamente, enviándome los siguientes mensajes:
Código:
Cuando agrego el primer producto,
El A se repite 1 veces en el array
Cuando agrego el segundo producto,
El producto C se repite 3 veces en el array
¿Saben en dónde estoy cometiendo el error?
De antemano, agradezco por sus comentarios. Sigo verificando.
Saludos!!