Le bouton Entrer ne soumet pas le formulaire (IE SEULEMENT) ASP.NET

J'ai un formulaire avec une zone de texte et un bouton. IE est le seul navigateur qui ne soumettra pas le formulaire lorsque Enter est pressé (fonctionne dans FF, Opera, Safari, Chrome, etc.). J'ai trouvé cette fonction javascript pour essayer d'inciter IE à se comporter; Mais sans utilité:

function checkEnter(e){ var characterCode if (e && e.which) { e = e characterCode = e.which } else { e = event characterCode = e.keyCode } if (characterCode == 13) { document.forms[0].submit() return false } else { return true } } 

La mise en oeuvre:

 searchbox.Attributes("OnKeyUp") = "checkEnter(event)" 

Aucun conseil?

EDIT: Cette page sur CodeProject décrit ce que Dillie a dit, et ça marche parfaitement.

L'autre chose que j'ai fait dans le passé est d'envelopper la zone de formulaire dans un panneau et de définir l'attribut DefaultButton sur le bouton de soumission que vous avez. Cela permet de mapper la clé enter à la soumission tant que vous avez un élément de formulaire en foyer dans la zone du panneau.

Créez simplement une entrée de texte dans une division cachée sur la page. Cela va contourner le bug IE.

Exemple div:

  <!-- Fix for IE bug (One text input and submit, disables submit on pressing "Enter") --> <div style="display:none"> <input type="text" name="hiddenText"/> </div> 

Il y a une bonne rédaction de ce problème ici, et une jolie solution basée sur jquery:

http://www.thefutureoftheweb.com/blog/submit-a-form-in-ie-with-enter

 // Use the following Javascript in your HTML view // put it somewhere between <head> and </head> <script language="JavaScript" type="text/javascript"><!-- function KeyDownHandler(btn) { if (event.keyCode == 13) { event.returnValue=false; event.cancel = true; btn.click(); } } // --> </script> // Put this in your TextBox(es) aka inside <asp:textbox ... > onkeydown="KeyDownHandler(ButtonID)" 

Lorsque vous utilisez l' display:none , IE ne verra pas le bouton et ne pourra donc l'utiliser pour soumettre le formulaire. Au lieu de cela, vous pouvez utiliser le z-index et le positionnement absolu pour le cacher sous un autre élément, par exemple avec le style:

position:absolute; bottom: -20px; left: -20px; z-index: -1;

Maintenant, il sera toujours là, utilisable par IE, mais caché sous un autre élément.

Cachez le bouton – ne pas utiliser l'affichage: aucun, mais avec les styles suivants:

 position: absolute; /* no longer takes up layout space */ visibility: hidden; /* no longer clickable / visible */ 

Si vous faites cela, vous n'aurez pas besoin d'ajouter d'autres éléments ou des entrées cachées.

Ceci est dû à une particularité dans IE pour les entrées de champ de texte unique.

Une solution simple consiste à empêcher la page d'avoir un seul champ de texte en ajoutant un autre masqué.

 <input type="text" name="hidden" style="visibility:hidden;display:none;" /> 

Voir … http://www.4guysfromrolla.com/articles/060805-1.aspx

Utilise-t-il un GET au lieu d'un POST? L'URL est-elle trop longue? J'ai vu ça …

Fondamentalement, un formulaire nécessite soit un bouton, soit un type d'entrée = "soumettre", soit un type d'entrée = "image" pour permettre au comportement intégré de soumettre un formulaire à l'entrée. Vous ne devriez pas avoir besoin d'un javascript pour le soumettre.