Pergunta

Eu estou usando a função document.form.submit () para um formulário de entrada bastante grande (centenas de campos, é um aplicativo de inventário). Eu estou chamando isso depois de o utilizador ter estado inactivo durante um determinado período de tempo e eu gostaria de salvar todos os dados que você digitou. Quando eu tento isso recarrega a página (a ação é #), mas qualquer novo texto digitado nos campos não é passado no pedido, então eu não chegar a colocá-lo no DB. Existe alguma razão fundamental por que isso acontece ou é o meu código simplesmente não jogar bonito juntos (eu estou usando a exibição de grade EXTJS para mostrar o formulário e uma biblioteca para rastrear o tempo ocioso)? Obrigado, Robert

Foi útil?

Solução

Eu acho que colocar a resposta aqui. O que descobri foi que fazendo isso: setTimeout ( 'frm.submit ();', 2000); causou a página para recarregar, mas não enviar o formulário. Quando eu fiz isso: frm.submit (); O formulário foi enviado e os dados foram passados. Eu não sei por que o primeiro caminho não funcionou, mas eu não preciso saber que:)

Outras dicas

Pode o servidor ser anular os valores de entrada. Dizer se a sua página na aparência servidor da seguinte maneira:

<form action="/page.cgi">
  ...
  <input name="Fieldx" value=""/>
</form>

Eu acho que vai anular o campo. Ou esta ação o servidor pode estar definindo-lo indiretamente. Em JSF, algo como isto.

<input name="Fieldx" value="#{bean.nullProperty}"/>

O que você tem no servidor e qual é o seu navegador?

Gostaria de tentar pegar a solicitação post HTML para ver se os campos de entrada estão incluídos. Se eles são, então, o servidor tem problema.

Mas sobre o que você disse, eu acho que é porque não há conflito na maneira como o navegador lida com JavaScript DOM. Este pode ser o caso, se você deixar de fora o botão enviar no formulário e funciona.

O método submit de objetos HTMLFormElement deve apenas enviar o formulário, como se o usuário tivesse clicado no botão enviar. Então, se o atributo action do formulário é definida como #, seria apenas parecem atualizar a página, porque ele está enviando os dados do formulário para a mesma página.

Estranho que ele ainda faz isso quando você define o atributo de ação para outra página embora.

É o atributo method da forma definida para get ou post?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top