Pergunta

Em ASP.NET webforms e ASP 3 (Classic ASP), me deparei com um problema no qual nomear seu formulário de botão enviar "enviar" iria "quebrar as coisas". Abaixo está o HTML renderizado:

<input type="submit" name="Submit" value="Submit" id="Submit" />

Eu digo "quebrar as coisas", porque eu não sei exatamente o porquê ou o que aconteceu. Mas os sintomas geralmente eram de que pressionar o botão enviar, por vezes, não fez nada ou seja, ele simplesmente não funcionou. Mas às vezes ele fez o trabalho.

Na verdade, eu só construiu um teste de página de um rápido com o código abaixo, e enviar funcionou bem:

<form id="form1" runat="server">
<div>
    <asp:TextBox ID="txtTest" runat="server" />
    <asp:Button ID="Submit" runat="server" Text="Submit" />
</div>
</form>

Mas , no passado, este problema surgiu, e renomear o botão sempre o sintoma desaparece.

Assim, faz todo o HTML / HTTP / Browser especialista conhecimento de qualquer razão para definir id = "submit" em um botão Enviar iria causar algum problema?

Editar

SO comentário parece sugerir "enviar" é uma palavra-chave reservada. Mas por que o "id" ou atributos "nome" intefere com isso? E como faz isso "reservado" palavra-chave se implementado de tal forma que poderia causar conflitos?

obrigado novamente

Foi útil?

Solução

O elemento form tem um método chamado submit, mas também tem os elementos de formulário na forma como membros.

Se você tem um botão no formulário chamado submit, você pode acessá-lo usando document.form1.submit. No entanto, uma vez que é o mesmo nome que o método submit, já não há qualquer maneira de acessar esse método. Se você usar o método para enviar o formulário, que o trabalho não será mais.

Por exemplo, se você tem um botão que envia o formulário usando Javascript, isso não funcionar:

<input type="button" name="submit" onclick="this.form.submit();" value="try" />

Quando o botão tenta usar o método submit, ele irá em vez de obter uma referência a si mesmo (e uma mensagem de erro ao tentar chamá-lo, como o botão não é uma função).

Outras dicas

peço-lhe para ficar longe de tudo de palavras reservadas do DOM do JavaScript. uso "minha" na frente de tudo o que você definir, ou US $, ou qualquer outra coisa que é claramente não vai entrar em conflito com as palavras reservadas que você pode acidentalmente apenas sobrecarregar e causar estragos.

O code-behind que é gerado que permite vincular eventos para o objeto são nomeados com base nos valores especificados.

Basta usar onsubmit se o problema no formulário de submissão

<form id="form1" runat="server" onsubmit="this.submit()">
<div>
    <asp:TextBox ID="txtTest" runat="server" />
    <asp:Button ID="Submit" runat="server" Text="Submit" Type="submit"/>
</div>
</form>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top