La mayoría tampoco es consciente del hecho de que puede distinguir el botón de formulario presionado simplemente dándoles un par de nombre / valor. P.ej
<form action="process" method="post">
...
<input type="submit" name="edit" value="Edit">
<input type="submit" name="delete" value="Delete">
<input type="submit" name="move_up" value="Move up">
<input type="submit" name="move_up" value="Move down">
</form>
En el lado del servidor, el botón real presionado se puede obtener simplemente verificando la presencia del parámetro de solicitud asociado con el nombre del botón. Si no es así null, entonces se presionó el botón.
He visto un montón de innecesarios JS hacks / soluciones para que, por ejemplo, cambiando la forma de acción o cambiar un valor de entrada oculta de antemano en función de pulsar el botón. Es simplemente asombroso.
Además, he visto casi tantos trucos / soluciones alternativas de JS para recopilar los marcados de múltiples casillas de verificación como en las filas de la tabla. En cada selección / verificación de una fila de la tabla, JS agregaría el índice de la fila a algún valor separado por comas en un elemento de entrada oculto que luego se dividiría / analizaría más en el lado del servidor. Eso es el resultado de no saber que puede dar a varios elementos de entrada el mismo nombre pero un valor diferente y que aún puede acceder a ellos como una matriz en el lado del servidor. P.ej
<tr><td><input type="checkbox" name="rowid" value="1"></td><td> ... </td></tr>
<tr><td><input type="checkbox" name="rowid" value="2"></td><td> ... </td></tr>
<tr><td><input type="checkbox" name="rowid" value="3"></td><td> ... </td></tr>
...
El desconocimiento daría a cada casilla de verificación un nombre diferente y omitiría el atributo de valor completo. En algunas situaciones de JS-hack / workaround-free también he visto algo de magia innecesariamente abrumadora en el código del lado del servidor para distinguir los elementos marcados.