Plusieurs formulaires sur une même page [Résolu]

Messages postés
69
Date d'inscription
vendredi 27 décembre 2002
Dernière intervention
26 juillet 2007
- 23 avril 2005 à 12:59 - Dernière réponse :
Messages postés
69
Date d'inscription
vendredi 27 décembre 2002
Dernière intervention
26 juillet 2007
- 9 mai 2005 à 00:50
Bonjour à tous,

Petite question de méthodologie sans doute ... Comment faire pour avoir plusieurs formulaires sur une même page ?

Je m'explique : pour un cas simple déjà, sur une page d'accueil j'ai dans un coin un petit formulaire login qui comporte 2 textbox (login et password), un bouton "Login", et un bouton "Inscription". Ailleurs sur la page, j'ai un autre petit formulaire pour souscrire à une newsletter qui comporte un textbox pour l'email et un bouton "ok" pour envoyer la demande.

Ca fonctionnait très bien en ASP en faisant 2 blocs <form> </form>.

J'ai donc fait deux composants ASCX pour les réutiliser sur plusieurs pages. Problème, les deux sont du coup dans le même bloc <form> </form>. Facile de gérer l'évènement clic de chaque bouton pour qu'il fasse ce qu'il faut. Mais si l'utilisateur se met dans une textbox, tape son texte puis appuie sur "Entrée", comment savoir quel bouton sera cliqué ? Avant, c'était le bouton "submit" du form en question, mais maintenant il n'y en a plus qu'un, et il faudrait que sur appui sur "entrée" depuis login ou password, ce soit le bouton "login" qui soit cliqué, et sur "entrée" dans newsletter, ce soit le bouton "ok" qui soit cliqué... Et je ne peux pas utiliser l'évênement keypress des textbox sinon je fais un postback à chaque lettre frappée au clavier. Et ça me paraît une usine à gaz de faire un javascript qui va tester la touche utilisée pour chaque textbox ...
Quelle est la façon de faire pour retrouver la souplesse qu'on avait avant en "vrai" html avec l'asp ?

Merci d'avance !

Stéphane
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Messages postés
6827
Date d'inscription
dimanche 15 décembre 2002
Dernière intervention
13 octobre 2010
- 23 avril 2005 à 22:07
3
Merci
deja tu n'es pas obligé de mettre un form dans un bloc form, car meme
en html ca ne passe pas (en théorie) il faudrais mettre tes ascx a
l'exterieur des balises form, mais le problème ne s'arretera pas la,
car en .net 1.1 c'est impossible, par contre en .net 2 ce sera
possible.



Pour ton problème il y a des textbox, qui possedent l'event
onMouseEnter fouille un peu sur le net ca doit etre facilement
trouvable - metabuilders.com de mémoire

<hr>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr

Merci jesusonline 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de jesusonline
Messages postés
69
Date d'inscription
vendredi 27 décembre 2002
Dernière intervention
26 juillet 2007
- 24 avril 2005 à 00:00
0
Merci
Salut Jesusonline,

Merci pour ta réponse. Comme tu le dis, il faudrait pouvoir mettre des contrôles en dehors du form runat=server ... En fait, il faudrait surtout pouvoir faire plusieurs forms runat=server dans la même page pour scinder les choses qui vont ensemble ...

Ceci dit, suite à ta remarque, j'ai un peu fouillé les nouveautés du .net 2, et j'ai comme le sentiment que le .net 1 est un produit bourré de défauts de jeunesse, une sorte de "premier jet" pour voir si ça prend auprès du public ... On a un peu le sentiment d'arriver au commencement d'un âge de maturité avec la v2 ...

Pour tout te dire, je suis pour le moment très déçu de devoir bricoler avec des javascripts et des évènements de souris ou de clavier (car on peut arriver dans un textbox avec la touche tab) pour essayer de retrouver quelque chose qui se faisait de façon évidente et claire avec l'asp ancienne mode ... Et puis quoi qu'il en soit, quand toute la page est une form, sans qu'aucun de ses contrôles n'ait le focus, l'appui sur la touche entrée provoque à tous les coups la validation sur le premier contrôle submit de la page. Alors qu'avant, il fallait avoir le focus sur une form en question pour que la validation se fasse ... C'était tellement plus propre ...

Qu'en penses tu ?

A+

Stéphane
Commenter la réponse de smoitry
Messages postés
6827
Date d'inscription
dimanche 15 décembre 2002
Dernière intervention
13 octobre 2010
- 24 avril 2005 à 02:07
0
Merci
Ce que j'en pense ?

c'est simple, asp.net est mon premier langage de programmation, je suis encore tout jeune (19ans) et j'apprend par moi meme, je n'ai jamais non plus touché à asp3, alors je ne sais pas comment ca fonctionne, mais il me semble pas que c'etait si poussé, et qu'il y avait quand meme pas mal de bidouilles, pas du meme genre qu'en asp.net mais tout de meme plein de bidouille.

Pour ce qui est de .net 2 c'est clair que la, il y a de l'amélioration, ca fait deja plusieurs mois que je bosse dessus, le produit commence à devenir stable (Ok, je viens tout juste de formater suite à un excés de beta :p) mais il y a pas mal de bonnes choses.

Ce qui faut voir c'est qu'on est libre de faire nos propres controles, alors un onkeyEnterPress sur un bouton, il n'y a pas beaucoup de bidouilles, c'est vrai qu'asp.net est jeune, mais on ne peut pas etre parfait du premier coup. En quelques années microsoft s'est fortement amélioré coté web.

Parmis les nouveautés de .net 2 qui pourrais t'interesser, il y a la possibilité de faire un control.focus, de mettre plusieurs form runat=server dans une meme page, d'arriver a recuperer les variables proprement de la page précedente (plus de request.form) etc...

autres grande nouveautés que j'apprecie gradement et qui m'est desormais indispensable : les master page, il y aussi le client callback qui se sert de la méthode ajax (plus de postback, pour certaines actions) etc... il y a plein de nouveautées.

Des que la beta 2 est officielement sortis, c'est à dire lundi, je mettrais a mes heures perdus (c'est à dire en ce moment jamais :d) des petits exemples & co


<HR>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
Commenter la réponse de jesusonline
Messages postés
586
Date d'inscription
lundi 7 janvier 2002
Dernière intervention
10 février 2010
- 24 avril 2005 à 03:12
0
Merci
bonjour,

il existe toujours se bon vieux javascript

<script language="JavaScript">
function disableEnterKey(e)
{
var key;

if(window.event)
key = window.event.keyCode; //IE
if(key == 13)
return false;
else
return true;
}
</script>

Et pour la petite discussion, ASP.NET n'apporte pas énormément de nouvelles choses pour ceux qui ont beaucoup d'expérience en asp3.0. C'est compilé, c'est plus rapide, c'est objet,...
mais au niveau du développement en lui-même, si ont veux vraiment optimiser son application, il faut (entre autres) disablé le viewstate. Et sans viewstate, il faut tout refaire à l'ancienne... bref on verra avec asp.net 2.0.

yopyop
Commenter la réponse de cs_Yopyop
Messages postés
69
Date d'inscription
vendredi 27 décembre 2002
Dernière intervention
26 juillet 2007
- 9 mai 2005 à 00:04
0
Merci
Salut Jesusonline,

Je te remercie pour tes réponses, en fait, j'ai attendu de pouvoir récupérer la Beta 2 de VS 2005 pour faire quelques essais. A priori, j'ai déjà utilisé quelques nouveautés qui me semblent bien utiles, en particulier les Master Pages qui sont vraiment hyper pratiques !

Mais, j'ai toujours le même os : tu m'as dit : "il y a la possibilité de faire un control.focus, de mettre plusieurs form runat=server dans une meme page"

Or, quand j'en mets deux (des form runat=server), il me fait une exception "A page can have only one server-side Form tag"...

Est-ce que tu as déjà fait quelques essais ? Y'a-t-il quelque chose à changer dans une quelconque propriété ?

Merci ! A+

Stéphane
Commenter la réponse de smoitry
Messages postés
6827
Date d'inscription
dimanche 15 décembre 2002
Dernière intervention
13 octobre 2010
- 9 mai 2005 à 00:40
0
Merci
Arf j'ai du dire une connerie sur ce coup.

Je croyais avoir lu ca quelque part, mais apparement j'ai soit revé soit mal compris, je viens rapidement de tester et meme message que toi.

Ce que tu peux faire, c'est rapidement rajouté un event onEnterKeyPress a tes boutons, ca prend pas longtemps, et puis ca peut etre assez pratique :)

j'ai une source qui parle d'un truc comme ca .


<HR>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
Commenter la réponse de jesusonline
Messages postés
69
Date d'inscription
vendredi 27 décembre 2002
Dernière intervention
26 juillet 2007
- 9 mai 2005 à 00:50
0
Merci
Salut,

Moi j'ai chopé un article chez MS :
http://msdn.microsoft.com/msdnmag/issues/03/05/CuttingEdge/default.aspx

Je vais lire ça et voir ce qu'ils proposent ... Ceci dit, je trouve ça pénible de la part de microsoft d'imposer cette unique Form par page ... Parce que le problème, c'est que du coup, même si le focus n'est dans aucun textbox, si l'internaute a le malheur d'appuyer sur Enter, c'est le premier bouton de la page qui est submité, et ça me plaît pas du tout ... Pire encore, dans une autre textbox de la page, c'est un autre bouton qui devrait être submitté en appuyant sur entrée, et on peut pas faire ... C'est quand même fou, on a l'impression de revenir en arrière ...

Si jamais t'as une info, je suis preneur ! Merci en tous cas !

A+

Stéphane
Commenter la réponse de smoitry

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.