sélection cases à cocher

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 : sélection cases à cocher

par Cyrano » 31 mai 2005, 11:52

Je viens de réaliser une erreur dans mon code, corriger comme suit:
function envoi(nom_form)
{
    var a = new Array();
    var f = new Array();
    var j = 0;
    var nb_elts = document.forms[nom_form].length;
    for (i=0; i<= nb_elts; i++)
    {
        if (document.forms[nom_form].elements[i].checked=true)
        {
            a[j] = document.forms.elements[i].value;
            f[j] = nom_form;
            j++;
        }
    }
}

par Invité » 31 mai 2005, 11:13

sorry, mon message est arrivé après ton dernier post.

par Invité » 31 mai 2005, 11:10

c'est étrange mais ce code coche une case à cocher si elle ne l'est pas à l'origine...

par Cyrano » 31 mai 2005, 11:08

Ok, je vois, alors il faudrait ajouter un élément identifiant le formulaire en plus de la case à cocher: Utiliser l'id de l'article par exemple préfixé par "form" et tu l'envoies en paramètre de la fonction. Exemple: Ton article a pour id AX123, ton formulaire doit être j'imagine construit dynamiquement, donc tu fais:
<form id="form_<?php echo($rox['id']); ?>" action="...etc..
Et dans ton élément onchange, tu envoies le paramètre
onchange=envoi(form_<?php echo($rox['id']); ?>)
modifie la fonction comme ceci maintenant:
function envoi(nom_form)
{
    var a = new Array();
    var f = new Array();
    var j = 0;
    var nb_elts = document.forms.length;
    for (i=0; i<= nb_elts; i++)
    {
        if (document.forms[nom_form].elements[i].checked=true)
        {
            a[j] = document.forms.elements[i].value;
            f[j] = nom_form;
            j++;
        }
    }
}
Comme ça, tu as deux tableaux parallèles avec le nom du formulaire et l'élément coché. On doit aussi pouvoir simplifier avec un tableau à deux dimensions, je sais pas trop en JavaScript.

par Invité » 31 mai 2005, 10:39

tu ne teste que le permier élément de plusisuers formulaires
c'est parcequ'il n'y a qu'un élément dans chaque formulaire (donc chaque annonce): une case à cocher

par Cyrano » 31 mai 2005, 09:29

Mouais, c'est curieux, à regarder ton script, tu ne teste que le permier élément de plusisuers formulaires: essaye comme ça (sans garantie)
function envoi()
{
	var a = new Array()
	var j = 0;
	var nb_elts = document.forms.length;
	for (i=0; i<= nb_elts; i++)
	{
		if (document.forms.elements[i].checked=true)
		{
			a[j] = document.forms.elements[i].value;
			j++;
		}
	}
} 

par manuscle » 31 mai 2005, 09:28

Essaie ça:

a = document.forms.elements[0].value

Mais je ne suis pas sûr du tout! :wink:

sélection cases à cocher

par donatello » 31 mai 2005, 02:30

Bonjour,
j'essaye d'écrire un script qui analyse des cases à cocher.
Si une case a été cochée par l'utilisateur, cette case est mise dans une variable. Dans le cas contraire, on ne fait rien.Mon code:
function envoi() {
var a = new Array()
for (i=0; i<= document.forms.length; i++) {
if (document.forms.elements[0].checked=true) {
a = document.forms.elements[0].checked //mon problème
}
}


Mon problème est que je ne sais pas comment écrire "mettre dans la var a uniquement les cases qui sont cochées".

Si je devais transcrire cette idée, j'écrirais:

a = document.forms.elements[0].checked = true


Mais biensûr, ce n'est pas correct puisqu'il y a deux égalités. Comment puis-je coder cette ligne?