OVH Cloud OVH Cloud

ne pas perde la valeur d'un champ de formulaire ne cliquant sur un lien

19 réponses
Avatar
bruno
bonjours, je voudrait que, lorsqu'on clique sur un lien de ma page (qui
rappele cette meme page) ne pas perdre la valeur d'un champ d'un
formulaire.

je procede en substance comme suit :
------
<form name=3D"form1">
<input type=3D"text" value=3D"<?php $mavar ?>" name=3D"mavar">
</form>
<a href=3Dindex.php?toto=3Dcancre&mavar=3D<?php $mavar ?> >balbla</a>
------
(je n'inclue pas vraiment le code php comme ca, c'est pour simplifier)

et je voudrait cr=E9er une fonction JS qui au Onkeypressed du champ
texte complete le parametre correspondant du lien.
mais... je ne sait pas faire :'(
je pense proceder comme suit :
documents.links.<???>.mavar.innerHTML(documents.form.form1.mavar.value)

enfin, quelque chose dans le genre...
merci de vos conseils avis=E9s!

9 réponses

1 2
Avatar
O.L.
O.L. wrote:
ASM a formulé la demande :

O.L. wrote:

Tu peux faire comme ça (l'événement onkeypress n'est pas parfait, je
préfère utiliser onpropertychange) :



c'est sûr que çà va fonctionner dans mon NC 4.5 ... !


C'est pas un événement standard ? Oups :)


*onpropertychange* c'est-y pas du IE only ?
p't'et' même que du IE-Win only ?
si c'n'est du IE6-SP2x ?


Pas possible, j'ai IE 6 SP1 :-p




Avatar
bruno
ASM a eructé tel le plus grand des gouroux :

ben ...là, entre toutes les réponses,
il a du matériel pour essayer voir à voir
- ce qu'il comprend
- ce qui pourrait être le mieux
- par quel bout bidouiller la chose


desolé du temps que j'ai mis pour repondre, mais fallait que je
cmmence a comprendre vos codes :

j'ai un nombre fixe de paramettres dans mon lien, seul leur valeur
change dynamiquement.
je songeait a ne pas mettre un OnClick=<fonctionJS()> pour eviter de
rajouter un surplus de lignes, en meme temps, ca ne fait aps bcp de
caracteres en plus et ca ma l'aire de bien simplifier la bête!

un petit exemple valant mieux q'un grand discours :

<!-- Dans les liens:MonChampInput=vide:valeur de depart,remplacé par
le JS -->

<form>
<input type="text" name="MonChampInput">
</form>

<ul>
<li>
<a href=index.php?merci=ASM&MonChampInput=vide>
</li>
<li>
<a href=index.php?merci=OL&MonChampInput=vide>
</li>
<li>
<a href=index.php?merci=AuxAutres&MonChampInput=vide>
</li>
<li>
<a href=index.php?merci=merci&AMaMere=vide>
</li>
<li>
<a href=index.php?merci=PourLeRepas&MonChampInput=vide>
</li>
<ul>

bon, maintenant, deux pistes : un champ <SELECT> <OPTION>...
ou se placer au niveau du lien pour le modifier.

en tout cas, merci de votre aide.
Ca me semblait etre un probleme interressant que de modifier un lien
ciblé dans une zone ciblée, selon un action ciblée, en lui
substituant une valeur ciblée. J'avait ce probleme dans ma ligne de
mire, des fois, faut savoir changer de cibles, merci a vous deux
chasseurs rompus!

Avatar
ASM
bruno wrote:
ASM a eructé tel le plus grand des gouroux :


ben ...là, entre toutes les réponses,
il a du matériel pour essayer voir à voir
- ce qu'il comprend
- ce qui pourrait être le mieux
- par quel bout bidouiller la chose



desolé du temps que j'ai mis pour repondre, mais fallait que je
cmmence a comprendre vos codes :


ouais ...

j'ai un nombre fixe de paramettres dans mon lien, seul leur valeur
change dynamiquement.
je songeait a ne pas mettre un OnClick=<fonctionJS()> pour eviter de
rajouter un surplus de lignes, en meme temps, ca ne fait aps bcp de
caracteres en plus et ca ma l'aire de bien simplifier la bête!

un petit exemple valant mieux q'un grand discours :


désolé, je ne comprends pas l'exemple
à quoi te servent les &MonChampInput=vide
dans les liens ?

<!-- Dans les liens:MonChampInput=vide:valeur de depart,remplacé par
le JS -->

<form>
<input type="text" name="MonChampInput">
</form>

<ul>
<li>
<a href=index.php?merci=ASM&MonChampInput=vide>
</li>
<li>
<a href=index.php?merci=OL&MonChampInput=vide>
</li>
<li>
<a href=index.php?merci=AuxAutres&MonChampInput=vide>
</li>
<li>
<a href=index.php?merci=merci&AMaMere=vide>
</li>
<li>
<a href=index.php?merci=PourLeRepas&MonChampInput=vide>
</li>
<ul>

bon, maintenant, deux pistes : un champ <SELECT> <OPTION>...


il me semble que l'enploi des listes d'options sont,
après les champs de texte, la base des formulaires.
Sachant que l'url envoyée par le formulaire se complète alors tte seule
avec tous les éléments du formulaire.

Il suffit ensuite du côté php, par le $QUERY_STRING
(ou $POST_QUERY ou je ne sais quelle fonction propre au php)
de récupérer les infos.

exemple de form en HTML
http://perso.wanadoo.fr/stephane.moriaux/truc/test_form_html.htm
à la validation du formulaire une url du genre ;
monserveur/monsite/mom_formulaire.php?sujetülj&from=ASM&raison=question&messg=Compris?
sera envoyée
au php de faire le tri et si besoin renvoyer le bazar pour compléments
(dans l'exemple -> résultat géré par javascript).

ou se placer au niveau du lien pour le modifier.

en tout cas, merci de votre aide.
Ca me semblait etre un probleme interressant que de modifier un lien
ciblé dans une zone ciblée, selon un action ciblée, en lui
substituant une valeur ciblée.


Le procédé peut bien sûr être envisagé et utilisé.

Exemple (où c'est l'action du formulaire qui est modifié) :
http://perso.wanadoo.fr/stephane.moriaux/truc/send_report.htm
Ne fonctionne qu'en javascript et donc avec les moyens limités
de ce langage côté mail.

J'avait ce probleme dans ma ligne de
mire, des fois, faut savoir changer de cibles, merci a vous deux
chasseurs rompus!



--
Stephane Moriaux et son [moins] vieux Mac


Avatar
bruno
je conniat les formulaires, le PHP...
... ce que je connait pas trop, c'est le JS, je sait prendre la valeur
d'un element (lien qui se fournit la valeur au clique), mais je ne sait
pas donner une valeur a un nombre indeterminé d'elements...

ce que j'ai appris :

-getElementById() => pas du JS mais se fait par rapport a DOM (si j'ai
bien compris)
-faut que j'apprenne a m'exprimmer
-je cherche trop le compliqué


faut que je teste cette option :
<html>
<base target="_blank">
<script type="text/javascript">
function setVar(leLien) {
var H = leLien.href;
H = H.substring(H.indexOf('=')+1);
document.form1.mavar.value = H;


----

désolé, je ne comprends pas l'exemple
à quoi te servent les &MonChampInput=vide
dans les liens ?


ils me servent a etre remplacés par JS lorsqueje remplit mon champ
input. Pourquoi mettre "=vide"? pour eviter un lien du genre :
href="toto=¨PasBeau&tata=&ouioui=MonIdole"

je ne suis pas sur qu'il marcherait tres bien..

il me semble que l'enploi des listes d'options sont,
après les champs de texte, la base des formulaires.
Sachant que l'url envoyée par le formulaire se complète alors tte seu le
avec tous les éléments du formulaire.
c'est vrai que mettre une liste d'option srait la meilleure solution,

mis a part le fait que ca risquerait de perdre mes utilisaterus
finals...(page differente des autres)... et que je voulait resoudre ce
probleme pour progresser

Il suffit ensuite du côté php, par le $QUERY_STRING
(ou $POST_QUERY ou je ne sais quelle fonction propre au php)
de récupérer les infos.
Je sait recuperer les var coté PHP ( tableau superglobal : $_GET[]

avec les nom des element en entrée ex : $_GET['toto'], pour les
post... ca se complique : $_POST[], pour les deux : $_REQUEST[] )

merci de tes exemple, je re-post si je n'y arrive pas
(congés + autres problemmes = temps de reponse longuet, dsl)

Avatar
bruno
j'ai testé ce code :

<script type="text/javascript">
function chercheLiens(valeur) {
var L = document.links; // collection ou tableau des liens de la page

for(var i=0;i<L.length;i++) {
confirm(h.value);
}
confirm("rien trouvé");
return false;
}
</script>

<form action="index.php" method="post" name="formAjout" class="form ">
<input type="submit" name="Submit" value="Ajouter"
onchange="chercheLiens(this.value)">
</form>

aucun des deux confirm ne se declenche, bizaremment...
Avatar
O.L.
bruno avait prétendu :
je conniat les formulaires, le PHP...
... ce que je connait pas trop, c'est le JS, je sait prendre la valeur
d'un element (lien qui se fournit la valeur au clique), mais je ne sait
pas donner une valeur a un nombre indeterminé d'elements...

ce que j'ai appris :

-getElementById() => pas du JS mais se fait par rapport a DOM (si j'ai
bien compris)


Hein ? Comment ça getElementById() c'est pas du JS ??

Le DOM (Document Object Model) est ce sur quoi s'appuie le JavaScript
pour servir dans les pages web : en gros, tous les objets de ta page
(window, document, et puis les balises ...).

Donc getElementById() est une fonction JS permettant d'accéder au DOM
(en allant chercher l'objet à qui on a donné un ID précis).

@+
Olivier

Avatar
YD

Le DOM (Document Object Model) est ce sur quoi s'appuie le JavaScript
pour servir dans les pages web : en gros, tous les objets de ta page
(window, document, et puis les balises ...).


Oui, tous les objets *au sens informatique* (avec leurs propriétés et
leurs méthodes)

Donc getElementById() est une fonction JS permettant d'accéder au DOM
(en allant chercher l'objet à qui on a donné un ID précis).


Ben non ! getElementById est une méthode de l'objet /document/, donc
fournie par le DOM (mise à disposition du js par le navigateur).

--
Y.D.

Avatar
ASM
bruno wrote:
j'ai testé ce code :

<script type="text/javascript">
function chercheLiens(valeur) {
var L = document.links; // collection ou tableau des liens de la page

for(var i=0;i<L.length;i++) {
confirm(h.value);


confirm(h.value) : qu'est-ce que ce h ?
au moins s'adresser à qquechose de connu :
confirm(L[i].value)
ou
confirm(L[i].href)
ou
confirm(finHref(L[i]));
avec une fonction séparée 'finHref(leLien)' pour extraire
ce que voulu du href du lien.

Pour chaque lien il sera demandé de confirmer sa valeur
il sera alors renvoyé true ou false ( ok / cancel )

Et alors ?
çà n'a pas d'importance ?
Autant alors employer alert(L[i].href);

<script type="text/javascript">
function chercheLiens() {
var L = document.links; // collection/tableau des liens de la page
var stockLiens = ''; // stockage des fins de liens
for(var i=0;i<L.length;i++) {
var mesg = finHref(L[i]); // extraction
if(mesg.length>0) // si fin du lien existe
if(confirm(mesg) // si c'est confirmé
stockLiens += '&'+mesg; // ajout au stock
else ''; // sinon rien (ne pas envoyer 'false')
}
if(stockLiens=='') {
alert('Rien trouvxe9');
return false; // arrete l'envoi
}
else {
// pour réviser le toutim (facultatif)
var reviz = stockLiens;
while( reviz.indexOf('&')>=0) reviz = reviz.replace('&', 'n');
alert('Revision :n'+reviz);
// fin facultatif
return confirm('On envoie pour de vrai ?');
// suivant réponse du confirm : autorise l'envoi ou non
// si tu ne veux pas de confirmation, mettre :
// return true;
// fin de la fonction
}

function finHref(leLien) {
leLien = leLien.href;
leLien = leLien.substring('?'+1);
return leLien;
}


</script>

<form action="index.php" method="post" name="formAjout" class="form">
<input type="submit" name="Submit" value="Ajouter"
onchange="chercheLiens(this.value)">
</form>

aucun des deux confirm ne se declenche, bizaremment...


dans la balise form il faut :
onsubmit="bla bla"
pour que ce soit actionné à l'appui sur [envoi]
le onchange n'a aucune signification dans cette balise

le onsubmit doit renvoyer true ou false (envoyer ou non)

onsubmit=" return chercheLiens();"



--
Stephane Moriaux et son [moins] vieux Mac

Avatar
ASM
O.L. wrote:

Hein ? Comment ça getElementById() c'est pas du JS ??


non c'est du DOM (Document Object Model)

des fonctions suplémentaires ont été introduites dans le JS
( getElementById, getElementsByTagName, setAttribute et j'en passe)
pour acceder au DOM

si le navigateur ne cause pas le DOM c'est donc foutu ... !

Donc getElementById() est une fonction JS permettant d'accéder au DOM


oui, sauf que toutes les versions de JS ne connaissent pas ces fonctions
(en pariculier le JS implémenté dans les navigateurs
ne causant pas en DOM, tel que mon cher NC4.5)

--
Stephane Moriaux et son [moins] vieux Mac

1 2