2010-08-23 6 views
0

Je cherchais un correctif pour arrêter IE actualiser la page au lieu de soumettre mon formulaire de ligne simple, quand un utilisateur frappe entrer au lieu de cliquer sur aller.Pourquoi ajouter une zone de texte cachée à un formulaire arrêter IE rafraîchir sur entrer

J'ai trouvé cette solution, qui fonctionne bien, mais je me demandais si quelqu'un pouvait expliquer pourquoi cela fonctionne?

La solution est j'ajouter une entrée de texte caché dans les balises de forme, comme celui-ci

`<form name="SearchForm" id="SearchForm" method="get" action=""> 

/*This is the hidden text input*/ 
<input type="text" style="visibility:hidden;display:none;" name="ieSearchEnter"> 

</input> 
<fieldset> 
<span><input type="text" name="Search" id="Search"/></span> 
<div class="field actions"> 
<input type="submit" name="Go" id="Go" class="submit" value="Go"/> 
</div> 

</fieldset> 
</form>` 

que j'ai trouvé here.

Merci!

Répondre

0

Est-ce que vous définissez vraiment la valeur ACTION à une chaîne vide, ou avez-vous simplement fait cela pour votre échantillon de code?

Je ne pense pas que IE soit vraiment "rafraîchissant la page" - je pense qu'il est automatiquement soumis votre formulaire.

Voici une page de test simple: http://www.enhanceie.com/sandbox/simpleform.asp. Lorsque vous appuyez sur Entrée, vous verrez que l'URL est mise à jour pour transmettre la valeur de l'utilisateur. IIRC, il y a du code dans la gestion de formulaire d'IE qui dit que si vous avez un formulaire contenant un champ de test simple, alors le fait d'appuyer sur ENTRER enverra ce formulaire. Dans votre solution de contournement, vous avez ajouté un champ de texte supplémentaire afin que l'optimisation ne soit pas appliquée.

Je pense que peut-être votre code côté serveur est exigeant que la soumission de formulaire contienne "Go = Go" ou il ignore la valeur soumise (Search = Whatevertheuserhadtyped) et simplement ré-affiche le formulaire. Si vous modifiez le script côté serveur de sorte qu'il ne nécessite pas Go = Go, votre problème devrait disparaître.

+0

Merci! C'est logique, et merci pour l'exemple :) – Kai

Questions connexes