Aller au contenu
Zebulon
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

Récuperer la valeur d'une checkbox


C.J.

Messages recommandés

Bonsoir,

 

desole de vous deranger mais j'ai une question. je vais esaye d'etre le plus clair possible.

 

j'ai cree un formulaire (formulaire d'edition). il contient une checkbox (dont la valeur par defaut est "No" (unchecked)). cette checkbox me permet de cacher certain champs lorsqu'elle est "checked" (sa valeur devient "Yes").

 

lorsque ce formulaire est valide, j'ai la possibilite (sur une autre page) de la visionner(formulaire d'affichage).

le probleme est que quel que soit l'etat de ma checkbox dans le formulaire precedent, les champs censes etre caches dans le formulaire d'afichage ne le sont pas.

j'ai une fonction qui par une condition recherchant la valeur de ma checkbox, doit cacher les champs voulu ou non mais elle ne marche pas car je ne comprends pas comment recuperer la valeur (=Yes) de la checkbox qui apparait sous cette forme :

 

<!-- FieldName="Laptop"

FieldInternalName="Laptop"

FieldType="SPFieldBoolean"

-->

Yes 

 

il faut donc que je recupere le "Yes"

 

voici ma fonction : (elle marche si je retire la condition mais cela cache definitivement le champs "Title", je ne peux pas l'afficher meme si la valeur de la checkbox est "No")

 

 

function findacontrol(FieldName) { //searches for the field name

 

var arr = document.getElementsByTagName("!");

// get all comments

for (var i=0;i < arr.length; i++ )

{

// now match the field name

if (arr.innerHTML.indexOf(FieldName) > 0)

{ return arr; }

}

}

function hideFields() { //hides Title field depending on Laptop checkbox value

 

var control = findacontrol("Laptop");

 

if(control.value == 'Yes'){

 

control = findacontrol("Title");

control.parentNode.parentNode.style.display="none";

 

}

else if(control.value == 'No'){

 

control = findacontrol("Title");

control.parentNode.parentNode.style.display="";

 

}

}

 

 

Pourriez vous m'aider ?

 

Merci d'avance,

 

Cedric

Lien vers le commentaire
Partager sur d’autres sites

De deux choses l'une :

- soit tu n'as pas suffisamment précisé dans quel environnement tu programmes

- soit tu n'as pas compris ce que font les différentes fonctions, ce qu'elles retournent et ce que tu peux faire avec

 

A priori on est en présence d'un bon mélange de ECMAScript et de DOM (et de markup particulièrement horrible compte tenu du travail à effectuer, mais passons...) donc on va se contenter de ce qu'on a.

 

Ta fonction findacontrol() va rechercher les noeuds de type commentaires (bon, ok, pas exactement puisque ton critère de recherche c'est les noeuds ayant pour nom "!" (ARGH) mais si ça marche dans ton environnement tu peux t'estimer chanceux) et cette fonction retourne le premier noeud dont la représentation HTML contient la chaîne recherchée (bonjour les dégâts le jour où tu as des champs nommés toto et toto1 (par exemple...)). Bref. Cette fonction te retourne le noeud du document qui correspond à ton commentaire. Un commentaire, en DOM, ça n'a pas d'attribut "value". Quand bien même cet élément aurait un attribut "value", comment veux-tu qu'il contienne le "Yes" qui est complètement en dehors du commentaire ?

 

Pour quelle raison n'effectues-tu pas un masquage directement lors de la génération de cette page de résultat ? Pourquoi n'utilises-tu pas des "input" (soit correctement définis - non modifiables et avec un style qui les fait apparaître comme du texte normal et pas comme des champs de saisie - soit de type "hidden" pour qu'on ne les voie pas), beaucoup plus appropriés pour véhiculer et manipuler des données ? Quel intérêt as-tu à laisser la possibilité de masquer / afficher des zones non remplies sur un "formulaire d'affichage" quand tu connais déjà les données saisies et donc que tu sais pertinemment qu'il n'y a rien à afficher (ou qu'il ne faut pas masquer) dans cette zone ?

Pourquoi, si tu génères cette page toi-même, ne pas générer du JavaScript de l'ECMAScript qui valorise une variable à true ou false en fonction des résultats de la page de saisie et qui te permet d'éviter ces commentaires moches où tu mets des données que tu n'utilises pas ? Utiliser directement la variable dans tes fonctions sera beaucoup plus efficace (et rapide : pas besoin de scanner le document à la recherche de commentaires contenant un certain texte) !

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

Merci pour ta reponse.

 

L'environnement.... Sharepoint (WSS 3.0), les formulaire sont auto-generes suivant les colones et les controles ajoutes.

 

Bien, je me rends compte que la fonction utilisee n'est pas des plus optimales. j'en ai une autre qui fonctionne exactement comme je le veux dans mon formulaire d'edition mais le fait de devoir trouver le "Yes" ou le "No" m'a l'air plus complique avec celle ci. (ici, dans mon formulaire d'edition les champs se masquent et apparaissent dynamiquement sans probleme mais si je masque le champs "Title", et que je vais dans le formulaire d'affichage, il est toujours present...toujours parce que je ne parviens pas a recuperer le "Yes".

 

la voici :

 

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>

<script>


_spBodyOnLoadFunctionNames.push("function");

$(document).ready(function()
{
$("input[title$='Laptop']").click(function()
{
if($("input[title$='Laptop']").is(':checked'))  
{

$("input[title$='Title']").parent('td').parent('tr').hide();

}
else
{

$("input[title$='Title']").parent('td').parent('tr').show();

}
});
});

</script>

 

Merci encore pour votre aide!!

 

Cedric

Modifié par C.J.
Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...