A maioria também não está ciente do fato de que você pode distinguir o botão do formulário pressionado apenas dando a ele um par nome / valor. Por exemplo
<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>
No lado do servidor, o botão real pressionado pode então ser obtido apenas verificando a presença do parâmetro de solicitação associado ao nome do botão. Se não énull
, o botão foi pressionado.
Eu tenho visto muito de desnecessária JS hacks / soluções alternativas para que, por exemplo, alterando a ação de formulário ou alterar um valor de entrada escondida antemão dependendo do botão pressionado. É simplesmente surpreendente.
Além disso, eu vi quase tantos hacks / soluções alternativas de JS para reunir as marcadas de várias caixas de seleção como nas linhas da tabela. Em cada seleção / verificação de uma linha da tabela, o JS adicionaria o índice da linha a algum valor separado por vírgula em um elemento de entrada oculto que seria então dividido / analisado posteriormente no lado do servidor. Isso é resultado da falta de conhecimento de que você pode dar a vários elementos de entrada o mesmo nome, mas um diferente valor e que ainda pode acessá-los como um array no lado do servidor. Por exemplo
<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>
...
O desconhecimento daria a cada caixa de seleção um nome diferente e omitiria todo o atributo de valor. Em algumas situações JS-hack / workaround-free, também vi uma mágica desnecessariamente opressora no código do lado do servidor para distinguir os itens verificados.