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.