Forum de discussion
Forum « Programmation Javascript » (archives)
Re: pb d'affichage en grisé
Envoyé: 4 avril 2005, 9h32 par Oznog
Le code test déjà tout ce qu'il y a dans textBox1. Tu ne peux rien avoir de plus qu'une valeur dans un champ de ce type (asp:TextBox). Alors tu parle d'une champ qui contient plusieurs mots ?
Mais, ton problème me semble d'avantage le ciblage. Tu dois faire attention, il y a deux méthodes totalement différentes que TU NE PEUX MÉLANGER ENSEMBLE (ils ne partagent pas les même propriétés/méthodes).
Donc avant tout ATTENTION :
MÉTHODE form
===============
Le Tutoriel que je t'ai invité à lire passe directement par l'objet "form" et descendre la hiérarchie (document.formulaire.element). "form" est un mot réservé en Javascript, tout comme "image" (new Image()). Si tu as plus d'un formulaire form[n] :
document.form
ou document.nomDuForm
C'est la même chose (attention, ce n'est pas le ID mais le "name"). Tout comme le this (lui-même) :
this.form
ou
this.nomDuForm
Mais dans ce dernier cas, le this étant relatif, ce n'est pas toujpours vrais. Dans un bouton par exemple, le "this" représente le bouton lui-même qui ne contient évidement pas d'objet formulaire (this[Bouton].nomDuForm[Faux]).
C'est généralement conseiller de passer à une fonction les objets eux-même. Tu as besoin de la liste et du champ texte. C'est pour ça que j'ai fais :
twSelectBGC(this.form.maListe,this.form.monChamp)
Pourquoi? Pour avoir une fonction universelle (portable).
MÉTHODE DOM
===========
Mais tu peux aussi passer par le DOM en ciblant directement le ID de l'élément (document.getElementById('TextBox1'). Si tu mélange les deux ça ne fonctionnera pas toujours bien que "value" le soit.
document.getElementById('TextBox1').value
Dans ton cas, le .NET travail avec un ID alors let's go :
<input type="button" name="Button" value="Button" OnClick="twSelectBGC(document.getElementById('ListBox1'),document.getElementById('TextBox1'))" >
Voilà pour le ciblage. Et assure toi de faire touit tes tests en Javascript pûr avant de le faire en .NET.
L'ERREUR
==========
La deuxième étape est du ressord du .NET. Et particulièrement spécifier au asp:Button d'appeler la fonction "twSelectBGC". C'est d'ailleurs ton message d'erreur :
'twSelectBGC' is not a member of 'ASP.recherche_gest_thesaurus_aspx'.
Alors là c'est une autre histoire, rien à voir avec le Javascript. Avec le .NET tu ajoute une toute nouvelle dimension, le traitement en temps réel côté serveur (runat="server").
Je ne suis pas spécialiste du .NET mais la plupart des développements utilisent aussi un vb ou c#. C'est intégré au .NET. Même plus besoin de ciblage.
En c# par exemple, tu vois bien que "monTexte" est accessible directement sans plus de spécification.
<script language="C#" runat="server">
void twPasseValeur ( Object src, EventArgs e ) {
if ( ! ( monTexte.Text == "" ) ) {
autreChampTexte.Text = monTexte.Text;
}
}
</script>
En VB
<script language="VB" runat="server">
Sub twPasseValeur ( src As Object, e As EventArgs )
If Not monTexte.Text = "" Then
autreChampTexte.Text = monTexte.Text
End If
End Sub
</script>
Et le contrôle
<form runat="server">
<asp:textbox id="monTexte" runat="server" >
<asp:textbox id="autreChampTexte" runat="server" >
<asp:button id="monBouton" runat="server" text="Submit" onClick="twPasseValeur" >
</form>
CONCLUSION
==========
Encore une fois il y a plus d'une méthode et les mélanger peut causer des problèmes. Note qu'il manque des informations pour trouver la bonne méthode. Par exemple pourquoi un bouton? Que fait il ce bouton à part l'appelle de la fonction Javascript ? Pourquoi alors ne pas écrire directement :
<form id="monForm" method="post" onsubmit="submit" runat="server">
<asp:TextBox id="TextBox1" style="Z-INDEX: 101; LEFT: 249px; POSITION: absolute; TOP: 62px" runat="server" Width="284px" Height="31px"></asp:TextBox>
<asp:ListBox id="ListBox1" style="Z-INDEX: 102; LEFT: 139px; POSITION: absolute; TOP: 159px" runat="server" Width="538px" Height="335px"></asp:ListBox>
<asp:Label ID="label_affiche_listealpha" runat="server"></asp:Label>
input type="button" name="Button" value="Button" OnClick="twSelectBGC(document.getElementById('ListBox1'),document.getElementById('TextBox1')" >
</form>
p.s. La discussion devrait se poursuivre dans le forum ASP.
Ciao
Oznog
Réponses
|