2009-05-14 7 views
4

J'ai quelques pages asp.net avec des contrôles TextBox sur eux. Certains d'entre eux postback sur entrée (dans un contrôle TextBox) et d'autres pas. Pour la vie de moi, je ne peux pas comprendre pourquoi ou pourquoi pas ...Quand une balise d'entrée HTML est-elle de nouveau affichée?

Je ne pense pas que cela ait quelque chose à voir avec asp.net. Ne pas utiliser ajax etc essayé de jouer avec une page HTML très simple et ne peut toujours pas comprendre.

Peut-être dans ou non dans un <formulaire> tag? Mais tous mes contrôles asp: textbox sont dans la balise de formulaire standard et certains le font et d'autres non. Pas lié à autoPostback de ce que je peux voir.

EDIT:

balisage de l'échantillon qui provoque un retour après:

<html> 
<body> 

<form> 
<input type=text /> 
</form> 

</body> 
</html> 

J'ai des pages asp.net qui certainement ne postez pas. Le code est vaste et je n'arrive pas à comprendre pourquoi.

EDIT2:

Comment puis-je empêcher une publication?

+0

pouvez-vous poster un échantillon? –

+0

Vous avez du code? –

+0

Pouvez-vous afficher le code d'une page où 1 zone de texte effectue une publication, mais pas une autre? –

Répondre

5

Si vous n'avez qu'une seule zone de texte et que vous ne souhaitez pas ce comportement, vous pouvez toujours placer une entrée masquée dans le formulaire.

<html> 
    <body> 
     <form> 
      <input type="text" ></input> 
      <input type="text" style="visibility:hidden"></input> 
     </form> 
    </body> 
</html> 

J'ai essayé ceci dans IE7 et FF3 et cela fonctionne.

+0

Une fois que la solution est devenue évidente, vous avez fourni une solution propre. – andleer

0

Si le contrôle de zone de texte est défini sur autopostback, il sera publié à chaque pression de touche (permettant ainsi le déclenchement de l'événement TextChanged).

Ensuite, les zones de texte dont la propriété Multiline est définie sur false s'afficheront en postback sur Entrée. Ce qui se passe réellement est un formulaire tel que défini par le comportement dans le navigateur.

Les boîtes dont Multiline est défini sur true ne provoqueront pas de soumission de formulaire lors de la saisie.

2

Généralement, la plupart des navigateurs Web détectent lorsqu'un formulaire n'a qu'une seule zone de texte et soumettent automatiquement le formulaire lorsque vous appuyez sur Entrée.

Si vous avez plusieurs zones de texte ou plusieurs buttes de formulaire, le comportement varie. ASP.Net a le mécanisme "defaultButton" pour les boutons, ce qui signifie que vous pouvez spécifier quel bouton est le bouton de soumission pour un panneau donné dans le cas où la touche d'entrée est enfoncée. Vous pouvez consulter this post pour plus d'informations sur la configuration de vos formulaires pour poster correctement.

Comme Boo l'a mentionné, cela ne sera pas déclenché par des zones de texte multilignes. Si le comportement est vraiment merdique dans votre forme entre les navigateurs, vous devrez peut-être regarder une solution javascript pour attraper la touche d'entrée enfoncée, et soumettre "manuellement" le formulaire via javascript.

Questions connexes