Así que tengo varias casillas de verificación de entrada, pero solo quiero obtener los datos si selecciono la casilla de verificación para mi función de publicación rápida
Así que aquí hay 3 casillas de verificación que tengo con diferentes valores de 1000, 2000 y 3000
<input type="checkbox" name="item1" value="1000" class="food"> <input type="checkbox" name="item2" value="2000" class="food"> <input type="checkbox" name="item3" value="3000" class="food">Ahora, en la función de publicación rápida, cuando envío mi formulario, puedo obtener mis datos de esta manera
const response = await client { other_data: 'other data from my forms' total_cost: parseInt(req.body.item1) + parseInt(req.body.item2) + parseInt(req.body.item3), } El problema es que cuando envío mi formulario, solo calculará el total si selecciono las 3 casillas de verificación de entrada y, por lo tanto, muestre el total_cost of 6000
Pero si solo hago clic en una casilla de verificación de entrada, luego envío mi formulario, mostrará el valor de 0 aunque hice clic en una entrada 1 con un valor de 1000.
¿Cómo agrego mis datos en Express para que muestre el valor de mi casilla de verificación de entrada según la entrada en la que hice clic? Porque si tuviera 100 entradas, agregarlas manualmente parece ineficiente
Simplemente use el operador OR para detectar cualquier valor que falte y configúrelo en cero:
total_cost: parseInt(req.body.item1||'0') + parseInt(req.body.item2||'0') + parseInt(req.body.item3||'0'),Para administrar mejor los datos de entrada en el backend, asigne a cada casilla de verificación el mismo atributo de name .
<input type="checkbox" name="items" value="1000" class="food"> <input type="checkbox" name="items" value="2000" class="food"> <input type="checkbox" name="items" value="3000" class="food">Luego, en el backend, puede simplemente sumar los valores como tales:
total_cost: req.body.items?.reduce((a,b) => a+(+b), 0) || 0,