Por que os elementos do formulário não devem ser nomeados?

Eu descobri através da depuração que eu não deveria nomear nenhum elemento de formulárioname="submit", mas mesmo depois de procurar, não encontrei nenhuma boa explicação do porquê?

Veja o exemplo de código simples abaixo:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>
        <form action="javascript:alert('submitted');" method="post" id="test-form">
            <label>Name</label>
            <input type="text" name="name-field" value="" />
            <input type="submit" name="submit" value="Submit Button" /> <!-- name should not be "submit" -->
            <p><a href="javascript: document.getElementById('test-form').submit();">Submit Link</a></p>
        </form>
    </body>
</html>
Se vocêspressione Enter enquanto em qualquer elemento de formulário ouClique aBotão de envio, vai funcionar.

Se vocêsClique noEnviar Link, vai ter erro

Erro não tratado: 'document.getElementById (' test-form '). Submit' não é uma função

Se você simplesmenterenomear seuBotão de envio para outra coisa senãoname="submit" (mesmo que você apenas capitalize uma parte dele) ou apenasremover aname="submit" atributo, em seguida, tanto oBotão de envio eEnviar Link vai funcionar.

Eu tentei isso na última versão do Internet Explorer, Firefox, Opera, Chrome e Safari. Todos eles têm um comportamento consistente em relação a isso.

Como você pode ver no meu exemplo de código, não há envolvimento do jQuery ou de qualquer outra biblioteca JavaScript.

Eu apreciaria a explicação. obrigado

questionAnswers(3)

yourAnswerToTheQuestion