¿Es posible en javascript verificar si varios registros en una tabla tienen ciertos campos idénticos antes de guardar?
Ex.
| artículo | tipo de letra | tipo_adj | lista_tamaños | cuanto |
|---|---|---|---|---|
| 1 | 1 | 0 | 1 | 1 |
| 1 | 1 | 0 | 2 | 1 |
| 1 | 1 | 1 | 1 | 1 |
| 1 | 1 | 1 | 1 | 1 |
| 1 | 2 | 0 | 1 | 1 |
| 1 | 2 | 1 | 1 | 1 |
Si el campo size_type es igual a 1, los campos adj_type y/o size_list deben ser iguales. Debería aparecer una alerta que indique “para un tipo de tamaño no puede haber diferentes add_type y size_list.
¿Es posible? Gracias.
Lo primero es pasar los datos de la tabla a una estructura de datos. Por ejemplo en el siguiente ejemplo muestro un formulario:
const data = { article: [1, 1, 1, 1, 1, 1], size_type: [1, 1, 1, 1, 2, 2], adj_type: [0, 0, 1, 1, 0, 1], size_list: [1, 2, 1, 1, 1, 1], quant: [1, 1, 1, 1, 1, 1], }; const incidents = []; data.size_type.forEach((value, index) => { if (value === 1 && data.adj_type[index] !== 1) { incidents.push({ row: index, entry: "adj_type" }); } if (value === 1 && data.size_list[index] !== 1) { incidents.push({ row: index, entry: "size_list" }); } }); console.log(incidents);El resultado podría encajar mejor, pero en este caso muestra el índice donde ocurre el problema y el nombre de la propiedad donde ocurre
Actualización: con respecto a pasar los datos de la tabla a una estructura de datos, puede intentar lo siguiente
const rows = document.querySelectorAll("table tbody tr"); const entries = Array.from(rows).map((row) => { return Array.from(row.cells).map((cell) => +cell.textContent); }); const data = { article: entries[0], size_type: entries[1], adj_type: entries[2], size_list: entries[3], quant: entries[4], }; console.log(data); <table> <thead> <tr> <th>article</th> <th>size_type</th> <th>adj_type</th> <th>size_list</th> <th>quant</th> </tr> </thead> <tbody> <tr> <td>1</td> <td>1</td> <td>0</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>0</td> <td>2</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>2</td> <td>0</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>2</td> <td>1</td> <td>1</td> <td>1</td> </tr> </tbody> </table>