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!

10 réponses

1 2
Avatar
bruno
avec bien sur, coté php $mavar=$_GET['mavar']
Avatar
O.L.
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="form1">
<input type="text" value="<?php $mavar ?>" name="mavar">
</form>
<a href=index.php?totoÊncre&mavar=<?php $mavar ?> >balbla</a>
------
(je n'inclue pas vraiment le code php comme ca, c'est pour simplifier)

et je voudrait créer une fonction JS qui au Onkeypressed du champ
texte complete le parametre correspondant du lien.


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

<INPUT TYPE="text"
onpropertychange="document.getElementById('MyA').href='index.php?totoÊncre&mavar='+this.value">
<a id=MyA href="index.php?totoÊncre&mavar=">lien</a>

Ou bien comme ça :

<INPUT TYPE="text" id=MyF>
<a href="javascript:;"
onclick="window.open('index.php?totoÊncre&mavar='+document.getElementById('MyF').value,
'_self')">lien</a>

@+
Olivier

Avatar
bruno
deux problemes se posent a moi :
-j'ai simplifié ma question
-je n'aurait pas dû

donc je reprend :
un nombre indeterminé de lignes vont posseder un lien (extrait d'une
BDD), de plus mon lien en globalitée est generé dynamiquement, et, ce
par un moteur de template, entendez par la que le lien ne sera pas le
meme pour chaque ligne.

Donc, totoÊncre pourras etre toto=ange a une autre ligne...
ce que je voudrait c'est pouvoir cibler l'argument lui meme :
CAD : modifier mavar=<valeur>
et non pas le href en entier.
c'est possible?

deplus (question optionnelle) est-il possible de selectionner mes liens
sans passer par un getElementById() ?? par exemple en se limitant a
TOUS les liens contenus dans un DIV ?? ex :
foreach (document.div.tabDynamique.link AS monLien) {
monTab = monLien.search.split('&');
if (monTab[0] == mavar ) {//le parametre qu'on veut modifier
monTab[1] = documents.form.form1.m­avar.value;
}
}

quelque chose dans le genre?

ps : je vait tester si ca marche lol, expliquer des fois ca fait un peu
mieux comprendre!
ps2 : dsl je connait pas bien la syntaxe JS alors j'ai un peu
inventé...
Avatar
O.L.
Il se trouve que bruno a formulé :
deux problemes se posent a moi :
-j'ai simplifié ma question
-je n'aurait pas dû

donc je reprend :
un nombre indeterminé de lignes vont posseder un lien (extrait d'une
BDD), de plus mon lien en globalitée est generé dynamiquement, et, ce
par un moteur de template, entendez par la que le lien ne sera pas le
meme pour chaque ligne.


Ouh là, ça se complique ! C'était mieux quand c'était simplifié :)

Donc, totoÊncre pourras etre toto=ange a une autre ligne...
ce que je voudrait c'est pouvoir cibler l'argument lui meme :
CAD : modifier mavar=<valeur>
et non pas le href en entier.
c'est possible?


Donc tu as une page avec pleins de liens, et tu veux que quand qqun
modifie un champ de ton formulaire, dans tous les liens de la page il y
ai la valeur de ce champ après "mavar=", c'est ça ?
Est ce que tu veux que ce parsing se fasse dans toute la page, ou bien
spécifiquement dans un DIV donné ?

Moi j'aurais mis un lien vide (javascript:; ou #), avec un onclick qui
appellerait une fonction JS à toi, qui se chargerait elle d'ouvrir la
page comme il faut avec la valeur actuelle de ton champ. Exemple :

<input type=text id=MyF value='abc'>

<script>
function fo(obj, params) {
url = params+"&mavar="+document.getElementById('MyF').value;
window.open(url, '_self');
}
</script>

<a href="javascript:;" onclick="go(this,
'script1.php?totoÊncre&variable=valeur')">Lien 1</a>
<a href="javascript:;" onclick="go(this,
'prog.php?totoÊncre&variable«cdef')">Lien 2</a>
<a href="javascript:;" onclick="go(this,
'app.php?totoÊncre&var=azerty')">Lien 3</a>

Avatar
ASM
bruno wrote:
deux problemes se posent a moi :
-j'ai simplifié ma question
-je n'aurait pas dû


J'a déjà rhen compris à la question 1
alors ... la question 2 ... tu penses !

au final, tu veux quoi ?
-1- que le click sur un lien envoie une valeur dans un champ texte ?
si oui : quelle valeur ?
1.1- le href du lien ?
1.2- le navvar collé au href ?
1.3- le texte du lien ?
1.4- une valeur individuelle au lien
-2- que ce soit le champ de texte qui va cercher une valeur d'un lien ?
2.1- si oui : quel lien ?
2.2- si oui : quoi du lien ?


donc je reprend :


donc je vais tenter de te donner des pistes :
avec comme idée le 1.2

un nombre indeterminé de lignes vont posseder un lien (extrait d'une
BDD), de plus mon lien en globalitée est generé dynamiquement, et, ce
par un moteur de template, entendez par la que le lien ne sera pas le
meme pour chaque ligne.


Ben forcément que les liens seront pas tous les mêmes !
- 1 - çà servirait t'à quoi
- 2 - issus d'une BdD (si elle n'a pas le hoquet)
- 3 - mâtinés de templates (que vient-ce faire ici ?)

Donc, totoÊncre pourras etre toto=ange a une autre ligne...


De quoi c'est-y que tu me causes ?
Je n'ai jamais vu un lien écrit comme çà !

ce que je voudrait c'est pouvoir cibler l'argument lui meme :
CAD : modifier mavar=<valeur>


Pareil :
-1- Qu'est-ce que ce 'mavar' ?
-2- à quoi correspontd-il ? ou est-il (sur la page)?
-3- moi pas comprendre çà quoi être : <valeur>
c'est du code ?
de quelle planète ?

et non pas le href en entier.
c'est possible?


Bon ... pour les liens tu as la collection links
(javascript 1 ou 1.2 ? Bref ... c'est du JS de nos grd pères)

liensPage = document.links;

tu peux donc atteindre le lien que tu veux :
- par son index
- par son nom
- par une boucle qui chercherait un href particulier
- par son id
(s'il en a un et si on ne vise que les navigateurs causant le DOM)


Bon ... pour le champs texte tu as la collection forms
(js de nos grds mères)

champText = document.forms['form1'].elements[2];
ou
champText = document.forms['form1'].elements['champ_1'];


Donc ton php triture la BdD et écrit les liens
çà tu sais le faire, non ? parceque moi je sais pas.

<a href="mon_truc_a_moi.php?mavar=<?php echo $navurl[] ?>"
onclick="envoiVal(this,champ);"><?php echo $naval[] ?></a>

deplus (question optionnelle) est-il possible de selectionner mes liens
sans passer par un getElementById() ?? par exemple en se limitant a
TOUS les liens contenus dans un DIV ?? ex :


en DOM :

liens_du_div_truc=document.getElementById('truc').getElementsByTagName('A');

en JS :

je sais pas, mais en fait çà n'a pas d'importance

<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++) {
var H = L[i].href; // url inscrite dans le lien
var V = H.substring(H.indexOf('=')+1); // tout le truc après le '='
if(V == valeur) return H ; // renvoie l'url complete
}
alert('Lien non trouvxe8');
return false;
}
</script>

foreach (document.div.tabDynamique.link AS monLien) {
monTab = monLien.search.split('&');
if (monTab[0] == mavar ) {//le parametre qu'on veut modifier
monTab[1] = documents.form.form1.m­avar.value


ben non c'est le contraire
(du moins si c'est le champs que tu veux modifier)

documents.form1.m­avar.value = machin_chose;

}
}

quelque chose dans le genre?

ps : je vait tester si ca marche lol, expliquer des fois ca fait un peu
mieux comprendre!
ps2 : dsl je connait pas bien la syntaxe JS alors j'ai un peu
inventé...


<a href="machin.php?mavar=gros bidule"
onclick="document.form1.mavar.value=this.href.substring(this.href.indexOf('=')+1);">
lien du gros bidule</a>

ou :

<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;
}
function VarChamp(leLien,leChamp) {
var H = leLien.href;
H = H.substring(H.indexOf('=')+1);
document.form1.elements[leChamp].value = H;
}
</script>
<p><a href="machin.php?mavar=gros bidule" onclick="setVar(this);">
gros bidule
</a>
<p><a href="machin.php?mavar=petit truc" onclick="setVar(this);">
petit truc
</a>
<p>
<a href="machin.php?mavar=special" onclick="VarChamp(this,'otrvar');">
special
</a>
<a href="machin.php?mavar=ASM" onclick="VarChamp(this,'otrvar');">
ahessehemme
</a>

<form name="form1">
<p>Ma variable = <input type="text" name="mavar">
<p>Autre variable = <input type="text" name="otrvar">
</form>
</html>

--
Stephane Moriaux et son [moins] vieux Mac

Avatar
ASM
bruno wrote:
avec bien sur, coté php $mavar=$_GET['mavar']


du côté php tu peux bien bricoler ce que tu veux

et tu en parles aux autres :
news:fr.comp.lang.php

--
Stephane Moriaux et son [moins] vieux Mac

Avatar
ASM
O.L. wrote:

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="form1">
<input type="text" value="<?php $mavar ?>" name="mavar">
</form>
<a href=index.php?totoÊncre&mavar=<?php $mavar ?> >balbla</a>
------
(je n'inclue pas vraiment le code php comme ca, c'est pour simplifier)

et je voudrait créer une fonction JS qui au Onkeypressed du champ
texte complete le parametre correspondant du lien.



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 ... !

et puis de tte façon y a (normalement) rien besoin avant replissage du champ

donc

<input type="text" onchange="document.links[1].href += this.value;">
ou

<input type="text" onchange="document.links[1].href =
'machin.php?mavar='+this.value;">



<INPUT TYPE="text"
onpropertychange="document.getElementById('MyA').href='index.php?totoÊncre&mavar='+this.value">


De mieux en mieux pour mon NC4.5 ... !

<a id=MyA href="index.php?totoÊncre&mavar=">lien</a>

Ou bien comme ça :

<INPUT TYPE="text" id=MyF>
<a href="javascript:;"
onclick="window.open('index.php?totoÊncre&mavar='+document.getElementById('MyF').value,
'_self')">lien</a>


<html>
<base target="_blank">
<h2>test : envoi d'une variable</h2>
<h3>cliquer un des liens</h3>
<p>0 <a href="machin.php?mavar=gros bidule">gros bidule</a>
<br>1 <a href="machin.php?mavar=petit truc">petit truc</a>
<br>2 <a href="machin.php?mavar=special">special</a>
<p>et voir l'url envoyée
<h3>modif lien 1</h3>
<form name="form1">
<p>Ecrire ici :
<input type="text" onchange="document.links[1].href
='machin.php?mavar='+this.value;">
puis aller cliquer le lien No 1
</form>
</html>

et ne pas oublier d'avoir une page 'machin.php'
pour voir le test en action

--
Stephane Moriaux et son [moins] vieux Mac


Avatar
ASM
O.L. wrote:

Ouh là, ça se complique ! C'était mieux quand c'était simplifié :)



M'en parle pss !

D'ailleus je vois que c'est la brasse coulée pour toi aussi :-)
et donne qque chose d'approchant ce que j'ai donné par ailleurs.

Donc, totoÊncre pourras etre toto=ange a une autre ligne...
ce que je voudrait c'est pouvoir cibler l'argument lui meme :
CAD : modifier mavar=<valeur>
et non pas le href en entier.
c'est possible?



Ne serait-ce pas plus simple de ce contenter du html ?

<form action="machin.php" method="get">
Entrez votre code ici :
<input type="text" name="mavar">
et validez au clavier par la touche [Entree]
</form>

ou (beaucoup plus complicated) :

<form action="machin.php" method="get">
Choisissez votre valeur ici :
<select name="mavar">
<option value="ma valeur 1" selected>ma valeur 1
<option value="ma valeur 2">valeur 2
<option value="ma valeur 3">valeur 3
<option value="ma valeur 4">valeur 4
<option value="ma valeur 5">valeur 5
</select>
et validez
<input type="submit" value="Envoyer">
</form>

--
Stephane Moriaux et son [moins] vieux Mac


Avatar
O.L.
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 :)

et puis de tte façon y a (normalement) rien besoin avant replissage du champ

donc

<input type="text" onchange="document.links[1].href += this.value;">


Bug : à chaque caratcère tapé, tout le champ est ajouté au lien.

ou

<input type="text" onchange="document.links[1].href =
'machin.php?mavar='+this.value;">


Sauf qu'il y aura (si j'ai bien compris) des liens très différents,
avec plus ou moins de variables à chaque lien.

C'est sûr que ça serait ptet mieux si il nous donnait des infos plus
concrètes sur ses trucs, au lieu de "simplifier". A toi de jouer, bruno
! :D


Avatar
ASM
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 ?

<input type="text" onchange="document.links[1].href =
'machin.php?mavar='+this.value;">


Sauf qu'il y aura (si j'ai bien compris) des liens très différents, avec
plus ou moins de variables à chaque lien.

C'est sûr que ça serait ptet mieux si il nous donnait des infos plus
concrètes sur ses trucs, au lieu de "simplifier". A toi de jouer, bruno
! :D


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


--
Stephane Moriaux et son [moins] vieux Mac



1 2