inserer des champs texte tout en restant sur la meme page

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : inserer des champs texte tout en restant sur la meme page

par isatis28 » 29 nov. 2005, 14:05

C'est bon ça marche impecable c'est juste ce que je voulais faire !

Re: inserer des champs texte tout en restant sur la meme pag

par sadeq » 29 nov. 2005, 13:52

...
if(form==k){document.write("<input type=text name='reg'>");}}
....
Quand tu fais un "document.write" tu réécris dans une page vierge, et donc il te semble que la zone input apparaisse dans "une nouvelle page".

Pour répondre à ton besoin, celui d'écrire la zone dans la même page où se trouve déjà le select, il ne faut pas utiliser la fonction "write", mais il faut au préalable marquer un emplacement qui va accueillir la zone à afficher.

Un objet <DIV> bien nommé et placé dans la page d'origine fera très bien l'affaire, car en JS on peut écrire dynamiquement dans une balise nommée en utilisant les propriétés "innerText" et "innerHTML" interprétées respectivement : Teste contenu et Texte au format HTML contenu dans la balise.

On écrit alors :
balise.innerText = "le texte sans mise en forme";
ou balise.innerHTML = "texte avec mise en forme";


Exemple:

Code : Tout sélectionner

<HTML> <SCRIPT> function lili (valeur) { if (valeur == 0) document.all["zones_de_saisie"].innerHTML = "<input type=text name='reg'>"; } </SCRIPT> <BODY> <SELECT name="Appellation" onchange="this.options[this.options.selectedIndex].value"> <option value='0'>truc </option> <option value='1'>machin </option> <option value='2'>autre </option> </SELECT> <DIV id="zones_de_saisie"></DIV> </BODY> </HTML>
NB.
Vu que ton script passe la valeur (.value) de l'option seléctionnée à la fonction "lili", il faut définir des values pour tes options et les vérifier (par défaut: si le mot value est absent de l'option, c'est un n° incrémentiel qui commence à 0 qui est appliqué)

Dans l'exemple, tu remarques que j'ai comparé la valeur reçue avec 0 qui est un numérique qui correpond à la valeur que j'ai donné à la première option du select. Alors ne confond pas la valeur de l'option avec le texte affiché par cette dernière.
Exemple l'option qui affiche "autre" a la valeur 2.
Une dernière remarque: les values des options ne sont pas forcement numériques.

par isatis28 » 29 nov. 2005, 13:49

je viens de relire mon code, et il est vrai que cela n'es peut etre pas très clair... J'y ai apporté quelque modifications et voila ce que cela donne:

function lili(form){

if(form=="autre"){document.write("<input type=text name='reg'>");}}


<select name="Appellation" onchange="lili(this.form.elements.Appellation.options[this.form.elements.Appellation.selectedIndex].value)">

<option>truc </option>
<option>machin </option>
<option>autre </option>

par isatis28 » 29 nov. 2005, 13:45

Ce n'est pas cela que je veux faire, je n'ai qu'une et uen seule liste deroulante. Si l'utilisateur ne trouve pas ce qu'il veut, il selectionne un item "autre, et la je voudrais qu'un champs texte apparaisse pour que l'utilisateur saisisse ce qu'il souhaite.

par zeus » 29 nov. 2005, 13:22

Est-ce que tu as essayé de t'inspiré de ce tuto ?
http://www.phpfrance.com/forums/voir_sujet-4562.php

inserer des champs texte tout en restant sur la meme page

par isatis28 » 29 nov. 2005, 13:13

J'ai une première liste deroulante, et en fonction de la valeur choisie, je voulais qu'un champs texte apparraise. J'ai plus ou moins réussi sauf que mon champ apparait sur une nouvel page, alors, que je voulait l'inserer sur la precedente! Voici un exemple:
function lili(form){

if(form==k){document.write("<input type=text name='reg'>");}}


<select name="Appellation" onchange="lili(this.form.elements.Appellation.options[this.form.elements.Appellation.selectedIndex].value)"> 
 
<option>truc </option>
<option>machin </option>
<option>autre </option>
Merci