Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

onClick sur un objet html

7 réponses
Avatar
Paskal
Bonjour



[Un peu long]

Ma question de quelques jours m'a soudain rappelé que j'avais également
rencontré un pb dans quelque chose qui pourrait être du scripting... enfin,
à mi chemin entre du scripting et du HTML.

Je n'ai jamais réussi à résoudre.

Sur un formulaire asp, destiné à un poste d'un réseau d'entreprise, je
demande aux utilisateurs d'entrer des données, données qui sont ensuites
enregistrées dans un base de données.

Tout fonctionne parfaitement bien, mais lors de la construction de ce
formulaire, j'ai voulu utiliser un contrôle activeX côté utilisateur (ce
formulaire est destiné à un poste unique bien précis, et son déploiement ne
pose aucun pb). Il s'agit de l'objet ControleX vcDateTimePicker (par exemple
dispo ici http://www.vbcodemagician.dk/resources/vcdtp.htm).
L'intégration du ControleX dans la page ne pose pas de souci particulier :

<object codebase="vcdatetimepicker.ocx"
id="vcDTP"
classid="clsid:B987185F-5488-11D3-801D-00C026A22F30"
width="90" height="20">
<param name="MonthTitleBackColor" value="&H00aa7777">
</object>

Le contrôleX fait parfaitement ce que j'attend de lui, d'ailleurs, si
j'ajoute un bouton du genre
<input type="button" value=" Date " onClick="vbscript:msgbox vcDTP.value">
la valeur renvoyée est bien celle saisie dans le ControleX . (je peux me
permettre d'utiliser du vbs sur ce poste que j'administre).

Le pb se situe maintenant : je voudrais que lorsque la valeur du timepicker
est modifiée, la valeur soit mise dans un élément type =hidden.
Pour régler la valeur du hidden, c'est facile :
pour <input type="hidden" id="hddDate">
je fais : "vbscript:hddDate.value = vcDTP.value"

En fait, je n'ai jamais réussi à prendre l'évènement Onchange (ou au pire
onClick sur l'objet ControleX).
L'exemple donné sur msdn à
http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/objects/param.asp
ne semble pas fonctionner :

<SCRIPT FOR=vcDTP EVENT=onClick>
hddDate.value = vcDTP.value
</SCRIPT>

j'ai aussi essayé en vbs :

sub vcDTP_onclick
hddDate.value = vcDTP.value
end sub

sans plus de résultat...

Qu'en pensez vous ? Comment puis-je récupérer l'évènement onClick sur mon
objet ?


Merci de m'avoir lu,
@+
Pascal

ps : J'ai n'ai pas voulu utiliser des solutions pas très clean comme faire
un timer pour placer la valeur du dtp dans le hidden.

7 réponses

Avatar
Fred
Dans son message %
Paskal nous dit :

Bonjour



[Un peu long]

Ma question de quelques jours m'a soudain rappelé que j'avais
également rencontré un pb dans quelque chose qui pourrait être du
scripting... enfin, à mi chemin entre du scripting et du HTML.

Je n'ai jamais réussi à résoudre.

Sur un formulaire asp, destiné à un poste d'un réseau d'entreprise, je
demande aux utilisateurs d'entrer des données, données qui sont
ensuites enregistrées dans un base de données.

Tout fonctionne parfaitement bien, mais lors de la construction de ce
formulaire, j'ai voulu utiliser un contrôle activeX côté utilisateur
(ce formulaire est destiné à un poste unique bien précis, et son
déploiement ne pose aucun pb). Il s'agit de l'objet ControleX
vcDateTimePicker (par exemple dispo ici
http://www.vbcodemagician.dk/resources/vcdtp.htm). L'intégration du
ControleX dans la page ne pose pas de souci
particulier :
<object codebase="vcdatetimepicker.ocx"
id="vcDTP"
classid="clsid:B987185F-5488-11D3-801D-00C026A22F30"
width="90" height="20">
<param name="MonthTitleBackColor" value="&H00aa7777">
</object>

Le contrôleX fait parfaitement ce que j'attend de lui, d'ailleurs, si
j'ajoute un bouton du genre
<input type="button" value=" Date " onClick="vbscript:msgbox
vcDTP.value"> la valeur renvoyée est bien celle saisie dans le
ControleX . (je peux me permettre d'utiliser du vbs sur ce poste que
j'administre).
Le pb se situe maintenant : je voudrais que lorsque la valeur du
timepicker est modifiée, la valeur soit mise dans un élément type
=hidden. Pour régler la valeur du hidden, c'est facile :
pour <input type="hidden" id="hddDate">
je fais : "vbscript:hddDate.value = vcDTP.value"

En fait, je n'ai jamais réussi à prendre l'évènement Onchange (ou au
pire onClick sur l'objet ControleX).
L'exemple donné sur msdn à
http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/objects/param.asp
ne semble pas fonctionner :

<SCRIPT FOR=vcDTP EVENT=onClick>
hddDate.value = vcDTP.value
</SCRIPT>

j'ai aussi essayé en vbs :

sub vcDTP_onclick
hddDate.value = vcDTP.value
end sub

sans plus de résultat...

Qu'en pensez vous ? Comment puis-je récupérer l'évènement onClick sur
mon objet ?


Merci de m'avoir lu,
@+
Pascal

ps : J'ai n'ai pas voulu utiliser des solutions pas très clean comme
faire un timer pour placer la valeur du dtp dans le hidden.


Bonjour !
L'exemple suivant fonctionne parfaitement chez moi :

<html>
<body>
<SCRIPT language="javascript" FOR="vcDTP" EVENT="Change()">
alert('toto');
</SCRIPT>
<object codebase="vcdatetimepicker.ocx"
id="vcDTP"
classid="clsid:B987185F-5488-11D3-801D-00C026A22F30"
width="90" height="20">
<param name="MonthTitleBackColor" value="&H00aa7777">
</object>
</body>
</html>

Je ne vois pas où tu as pu te tromper. J'ai fait des essais avec et sans
parenthèses après "change", avec et sans guillemets autour de vcFTP et
Change(), cela fonctionne toujours.

Copie ce code pour voir si cela fonctionne ou pas chez toi ?

--
Fred

Avatar
Paskal
Bonjour

c'est bizarre : je viens de remarquer que seuls les évènements de souris
onmouseover, onmouseout, onmousemove semblent fonctionner sur les objets...

@+
pascal





<object codebase="vcdatetimepicker.ocx"
id="vcDTP"
classid="clsid:B987185F-5488-11D3-801D-00C026A22F30"
width="90" height="20">
<param name="MonthTitleBackColor" value="&H00aa7777">
</object>

Le pb se situe maintenant : je voudrais que lorsque la valeur du
timepicker est modifiée, la valeur soit mise dans un élément type
=hidden.

En fait, je n'ai jamais réussi à prendre l'évènement Onchange (ou au
pire onClick sur l'objet ControleX).
L'exemple donné sur msdn à
http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/objects/param.asp
ne semble pas fonctionner :

<SCRIPT FOR=vcDTP EVENT=onClick>
hddDate.value = vcDTP.value
</SCRIPT>

Qu'en pensez vous ? Comment puis-je récupérer l'évènement onClick sur
mon objet ?


Avatar
Paskal
Sur un formulaire asp, destiné à un poste d'un réseau d'entreprise,
je demande aux utilisateurs d'entrer des données, données qui sont
ensuites enregistrées dans un base de données.

<object codebase="vcdatetimepicker.ocx"
id="vcDTP"
classid="clsid:B987185F-5488-11D3-801D-00C026A22F30"
width="90" height="20">
<param name="MonthTitleBackColor" value="&H00aa7777">
</object>

Le pb se situe maintenant : je voudrais que lorsque la valeur du
timepicker est modifiée, la valeur soit mise dans un élément type
=hidden. Pour régler la valeur du hidden, c'est facile :
pour <input type="hidden" id="hddDate">
je fais : "vbscript:hddDate.value = vcDTP.value"

En fait, je n'ai jamais réussi à prendre l'évènement Onchange (ou au
pire onClick sur l'objet ControleX).
L'exemple donné sur msdn à
http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/objects/param.asp
ne semble pas fonctionner :

<SCRIPT FOR=vcDTP EVENT=onClick>
hddDate.value = vcDTP.value
</SCRIPT>


Bonjour !
L'exemple suivant fonctionne parfaitement chez moi :

<html>
<body>
<SCRIPT language="javascript" FOR="vcDTP" EVENT="Change()">
alert('toto');
</SCRIPT>
<object codebase="vcdatetimepicker.ocx"
id="vcDTP"
classid="clsid:B987185F-5488-11D3-801D-00C026A22F30"
width="90" height="20">
<param name="MonthTitleBackColor" value="&H00aa7777">
</object>
</body>
</html>

Je ne vois pas où tu as pu te tromper. J'ai fait des essais avec et
sans parenthèses après "change", avec et sans guillemets autour de
vcFTP et Change(), cela fonctionne toujours.

Copie ce code pour voir si cela fonctionne ou pas chez toi ?



Bonjour Fred


Ben... bravo !
J'y ai passé des heures, sans y parvenir.

Effectivement :
EVENT="change()", ca fonctionne impeccablement bien. Là où je cherchais
onChange ou onClick, le "change" fontionne.

Merci beaucoup !

@+
pascal


Avatar
Fred
Dans son message
Paskal nous dit :

Bonjour

c'est bizarre : je viens de remarquer que seuls les évènements de
souris onmouseover, onmouseout, onmousemove semblent fonctionner sur
les objets...


La tu parles des événements liés aux objets du modèle objet DHTML.
Ta problématique était de récupérer un événement de l'objet lui même.
Je crois comprendre où était ton erreur. Tu as utilisé les noms d'événement
du DHTML.
Pour faire mon essai, j'ai visualisé l'ocx dans l'explorateur d'objet pour
connaître le nom de ses événements.


--
Fred

Avatar
Paskal
Bonjour Fred


Ben... bravo !
J'y ai passé des heures, sans y parvenir.

Effectivement :
EVENT="change()", ca fonctionne impeccablement bien. Là où je
cherchais onChange ou onClick, le "change" fontionne.




du coup,

<script language="vbscript">
sub vcDTP_change
hddDate.value = left(vcDTP.value,10)
end sub
</SCRIPT>

Im-pe-ccable. Merci !!

@+
pascal

Avatar
Paskal
Bonjour Fred


c'est bizarre : je viens de remarquer que seuls les évènements de
souris onmouseover, onmouseout, onmousemove semblent fonctionner sur
les objets...


La tu parles des événements liés aux objets du modèle objet DHTML.
Ta problématique était de récupérer un événement de l'objet lui même.
Je crois comprendre où était ton erreur. Tu as utilisé les noms
d'événement du DHTML.
Pour faire mon essai, j'ai visualisé l'ocx dans l'explorateur d'objet
pour connaître le nom de ses événements.


Ok, tout s'éclaire... c'est effectivement là que j'ai "boulétté"...

merci !

@+
pascal


Avatar
Fred
Dans son message
Paskal nous dit :

Bonjour Fred


Ben... bravo !
J'y ai passé des heures, sans y parvenir.

Effectivement :
EVENT="change()", ca fonctionne impeccablement bien. Là où je
cherchais onChange ou onClick, le "change" fontionne.




du coup,

<script language="vbscript">
sub vcDTP_change
hddDate.value = left(vcDTP.value,10)
end sub
</SCRIPT>

Im-pe-ccable. Merci !!

@+
pascal


Bien ! Bonne continuation :-)

--
Fred