A primeira resposta é a melhor solução:
Adicione um manipulador onsubmit ao formulário (via plain js ou jquery $ (). Submit (fn)) e retorne false a menos que suas condições específicas sejam atendidas.
Mais específico com jquery:
$('#your-form-id').submit(function(){return false;});
A menos que você não queira que o formulário seja enviado, nunca - nesse caso, por que não deixar de fora o atributo 'ação' no elemento do formulário?
Escrever extensões do Chrome é um exemplo de onde você pode ter um formulário para entrada do usuário, mas não deseja que ele seja enviado. Se você usar action = "javascript: void (0);", o código provavelmente funcionará, mas você terminará com este problema em que obtém um erro sobre a execução de Javascript embutido.
Se você deixar a ação completamente de fora, o formulário será recarregado, o que também é indesejável em alguns casos ao escrever uma extensão do Chrome. Ou se você tivesse uma página da web com algum tipo de calculadora embutida, onde o usuário forneceria alguma entrada e clicaria em "Calcular" ou algo parecido.