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

Détruire un élement de formulaire

7 réponses
Avatar
Jibé
Bonjour,

est il possible de "détruire" (faire qu'il n'existe plus) un élément
d'un formulaire.
Dans un cas très particulier j'ai besoin de soumettre un formulaire en
m'assurant qu'un champ select n'existera pas pour mon script.
Je ne peux pas me contenter de le mettre à vide....

Merci d'avance
JB

7 réponses

Avatar
ASM

est il possible de "détruire" (faire qu'il n'existe plus) un élément
d'un formulaire.
Dans un cas très particulier j'ai besoin de soumettre un formulaire en
m'assurant qu'un champ select n'existera pas pour mon script.


c'est soit un champ : <input type=text ou type=password>
soit un select : <select>

ou bien parles-tu d'1 champ d'1 select ? c a d un <option> ?

tu connais sa position dans la liste ?

function supprime(selecteur,champ) (
for (var i=champ; i<selecteur.length;i++)
selecteur.options[champ*1-1] = selecteur.options[champ]:
selecteur.length --;
}

<a href="#" onclick="supprime(document.monform.leselect,3);">
supprime 3ieme element liste de 'leselect' du form 'monform'</a>



Mais pour detruire tout le select
voir :
http://fr.selfhtml.org/javascript/objets/node.htm

soluce non vérifiée :

soit un formulaire dont le nom est 'truc'
soit un élément dont le nom est 'envoi'

function detruire(leform,nom) {
if(document.getElementById) {
var F = document.forms[leform];
for(i = 0; i < F.length; i++) {
if(F[i].name == nom && F[i].hasChildNodes()) {
var C = F[i].childNodes;
for(var j=0;j<C.lenght;j++) removeChild(C[j]);
}
if(F[i].name == nom) F.removeChild(F[i]);
}
}
else alert('navigateur non compatible');
}

<a href="javascript:detruire('truc','envoi')">supprime envoi</a>


--
*******************************************************
Stéphane MORIAUX et son vieux Mac
Aide Pages Perso (images & couleurs, formulaire, CHP)
http://perso.wanadoo.fr/stephane.moriaux/internet/
*******************************************************

Avatar
ciber lapin

Bonjour,

est il possible de "détruire" (faire qu'il n'existe plus) un élément
d'un formulaire.
Dans un cas très particulier j'ai besoin de soumettre un formulaire en
m'assurant qu'un champ select n'existera pas pour mon script.
Je ne peux pas me contenter de le mettre à vide....

Merci d'avance
JB


Document.getElementById("id_du_formulaire").removeNode(true);

Avatar
Bobe
ciber lapin nous a dit le 28/01/2005 16:34:

Document.getElementById("id_du_formulaire").removeNode(true);


removeNode() est spécifique à Microsoft.
Il faut utiliser removeChild() pour retirer un noeud du document.

--
Bobe (Aurélien Maille)
http://webnaute.net

"la vie d'un geek est un combat perpétuel contre l'imperfection"

Avatar
Jibé
Document.getElementById("id_du_formulaire").removeNode(true);


Je me suis effectivement pas très bien exprimé ;
j'ai un formulaire qui s'appelle MonForm
dans ce formulaire j'ai un select qui s'appelle SDomaine et qui contient
plusieurs option

Dans certains cas j'ai besoin que ce SDomaine n'existe pas quand le
formulaire est envoyé à la page de script. Comme si mon formulaire ne
l'avait jamais contenu....
J'ai essayé vos différentes suggestions mais je n'avance pas (la notion
de noeud et de DOM est assez nouvelle pour moi)
Merci

JB

Avatar
ciber lapin


Document.getElementById("id_du_formulaire").removeNode(true);



Je me suis effectivement pas très bien exprimé ;
j'ai un formulaire qui s'appelle MonForm
dans ce formulaire j'ai un select qui s'appelle SDomaine et qui contient
plusieurs option

Dans certains cas j'ai besoin que ce SDomaine n'existe pas quand le
formulaire est envoyé à la page de script. Comme si mon formulaire ne
l'avait jamais contenu....
J'ai essayé vos différentes suggestions mais je n'avance pas (la notion
de noeud et de DOM est assez nouvelle pour moi)
Merci

JB


document.MonForm.removeChild(document.MonForm.SDomaine);

ou
<form name='MonForm' id='MonForm' .......>
<select name='SDomaine' id='SDomaine'>

document.getElementById('MonForm').removeChild(document.getElementById('SDomaine'));

il ya aussi une autre solution moins gratieuse qui marche:

<fom >
<span id="efface">
<select >
<option>....</option>
</select>
</span>
...
</form>


document.getElementById("efface").innerHTML = "";

tu peux meme remplacer par un autre truc:

document.getElementById("efface").innerHTML = "<input type='text'>";


Avatar
Jibé
Je me suis effectivement pas très bien exprimé ;
j'ai un formulaire qui s'appelle MonForm
dans ce formulaire j'ai un select qui s'appelle SDomaine et qui
contient plusieurs option



document.MonForm.removeChild(document.MonForm.SDomaine);

ou
<form name='MonForm' id='MonForm' .......>
<select name='SDomaine' id='SDomaine'>

document.getElementById('MonForm').removeChild(document.getElementById('SDomaine'));


Coolissime.......... les deux fonctionnent impecable (IE,FF et Opera sur
Win XP)
Je me prenais la tête depuis un moment.
Merci beaucoup.


Avatar
Olivier Miakinen

document.MonForm.removeChild(document.MonForm.SDomaine);

ou
<form name='MonForm' id='MonForm' .......>
<select name='SDomaine' id='SDomaine'>

document.getElementById('MonForm').removeChild(document.getElementById('SDomaine'));


Coolissime.......... les deux fonctionnent impecable (IE,FF et Opera sur
Win XP)


Puisque les deux fonctionnent, choisis le second qui est plus propre et
conforme au DOM (tu as bien fait de ne pas retenir celui à base de
innerHTML qui en est très loin).