Verification selection minimale, parmis tableau de checkbox, en Javascript

Résolu
htaine Messages postés 13 Date d'inscription mercredi 16 mai 2007 Statut Membre Dernière intervention 11 février 2011 - 21 juin 2010 à 18:28
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 - 25 juin 2010 à 14:20
Bonjour à tous, je demande votre aide après "googlelisation" de mon problème, et pas de réponse adéquate...merci d'avance de votre attention et vos réponses.

Dans un formulaire classique je dois proposer un tableau de sélection de plage de disponibilité.
J'aimerais , si possible, vérifier en javascript si au moins une des plages à été sélectionnée.

Voici l'aspect général :
Quand êtes-vous disponible ? * :

                            
                            Lundi,
Mardi,
Mercredi,
Jeudi,
Vendredi,
Samedi,
Dimanche,

----

Matin,
,
,
,
,
,
,
,

----

Après-midi,
,
,
,
,
,
,



Et la vérification que j'ai à dispo :
function VerifRecrutement(form)
{
with(form)
{
var valid = true;
if(valid) if((!TestChampVide(lundi_matin, "Vous devez saisir au moins une plage de disponibilité!"))||(!TestChampVide(mardi_matin, "Vous devez saisir au moins une plage de disponibilité!"))|| ETC...) valid = false;

Mais ceci ne fonctionne pas... MERCi d'avance pour vos pistes...
A voir également:

14 réponses

PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 16
25 juin 2010 à 14:20
dans la méthode que je t'ai donné il conviendra, bien évidement, de supprimer les alertes au sein des fonctions de test...

;O)
3
Zobibol Messages postés 469 Date d'inscription mercredi 9 janvier 2002 Statut Membre Dernière intervention 20 février 2017 6
22 juin 2010 à 17:22
Bien le bonjour, si j'ai bien compris il faut vérifier qu'au moins une check est cochée:
ça donnerais un truc du genre:


<html>
<head>
<script>
function checkDispo(){
var _table = document.getElementById("dispo_recrutement");
var _check = _table.getElementsByTagName("input");
// boolean qui va indiquer qu'une check au moins est cochée.
var _ischeck = false;
for ( var i = 0; i<_check.length; i++){
// d'abord on s'assure que ce soit une check box
if ( _check[i].type =="checkbox"){
if ( _check[i].checked){
_ischeck= true;
break;
}
}
}
if (!_ischeck){
alert("merci de selectionner une ligne au moins");
}else{
alert ("vous avez coché au moins une case");
}
}
</script>
</head>

Quand êtes-vous disponible ? * :


Lundi,
Mardi,
Mercredi,
Jeudi,
Vendredi,
Samedi,
Dimanche,

----

Matin,
,
,
,
,
,
,
,

----

Après-midi,
,
,
,
,
,
,



</html>


Non ?


[o-_-o]
0
htaine Messages postés 13 Date d'inscription mercredi 16 mai 2007 Statut Membre Dernière intervention 11 février 2011
23 juin 2010 à 14:11
C'est génial, merci cela fonctionne parfaitement !!!

Juste pour terminer, comment positionner ce script dans le script de vérification des autres champs pour qu'il soit utilisé à la suite des autres ? (car j'utilise déjà le onclick="VerifForm()")

Voici le script général des autres champs :
function VerifRecrutement(form)
{
with(form)
{
var valid = true;
if(valid) if(!TestChampVide(nom, "Vous devez saisir votre nom !")) valid = false;
if(valid) if(!TestChampVide(prenom, "Vous devez saisir votre prénom !")) valid = false;
if(valid) if(!TestChampVide(naissance, "Vous devez saisir votre date de naissance !")) valid = false;
if(valid) if(!TestChampVide(adresse, "Vous devez saisir votre adresse !")) valid = false;
if(valid) if(!TestChampVide(cp, "Vous devez saisir votre code postal !")) valid = false;
if(valid) if(!TestCP(cp)) valid = false;
if(valid) if(!TestChampVide(ville, "Vous devez saisir votre ville !")) valid = false;
if(valid) if(!TestChampVide(telfixe, "Vous devez saisir votre numéro de téléphone !")) valid = false;
if(valid) if(!VerifTel(telfixe)) valid = false;
if(valid) if(!TestChampVide(telmob, "Vous devez saisir votre numéro de téléphone portable!")) valid = false;
if(valid) if(!VerifMobile(telmob)) valid = false;
if(valid) if(!TestChampVide(mail, "Vous devez saisir votre e-mail !")) valid = false;
if(valid) if(!TestEmail(mail)) valid = false;
if(valid) if(!TestChampVide(naissance, "Vous devez saisir votre date de naissance (jj/mm/aaaa) !")) valid = false;

if(valid) if(!TestChampVide(station, "Veuillez saisir au moins une ligne dans le champs Station près de chez vous !")) valid = false;
if(valid) if(!TestChampVide(experience, "Veuillez saisir au moins une ligne dans le champs Experience !")) valid = false;
if(valid) if(!TestChampVide(nb_heures, "Vous devez saisir un nombre d'heures d'intervention par semaine!")) valid = false;

return valid;	
}
}


J'ai testé de placer ta fonction avant le "return valid", mais celui-ci se déclenche dès qu'un autre champ est vide, et non en dernière position. Placé après, il ne fonctionne pas.
Mais déjà un GRAND MERCI ! Vive Codes-sources !
0
Zobibol Messages postés 469 Date d'inscription mercredi 9 janvier 2002 Statut Membre Dernière intervention 20 février 2017 6
23 juin 2010 à 14:24
alors, la , je pense que ça devrait passer comme ça:

function checkDispo(){
var _table = document.getElementById("dispo_recrutement");
var _check = _table.getElementsByTagName("input");
// boolean qui va indiquer qu'une check au moins est cochée.
var _ischeck = false;
for ( var i = 0; i<_check.length; i++){
// d'abord on s'assure que ce soit une check box
if ( _check[i].type =="checkbox"){
if ( _check[i].checked){
_ischeck= true;
break;
}
}
}
if ( !_isCheck){
alert ("vous devez renseigner une dispo calendaire");
}
return _isCheck;
}
function VerifRecrutement(form)
{
with(form)
{
var valid = true;
if(valid) if(!TestChampVide(nom, "Vous devez saisir votre nom !")) valid = false;
if(valid) if(!TestChampVide(prenom, "Vous devez saisir votre prénom !")) valid = false;
if(valid) if(!TestChampVide(naissance, "Vous devez saisir votre date de naissance !")) valid = false;
if(valid) if(!TestChampVide(adresse, "Vous devez saisir votre adresse !")) valid = false;
if(valid) if(!TestChampVide(cp, "Vous devez saisir votre code postal !")) valid = false;
if(valid) if(!TestCP(cp)) valid = false;
if(valid) if(!TestChampVide(ville, "Vous devez saisir votre ville !")) valid = false;
if(valid) if(!TestChampVide(telfixe, "Vous devez saisir votre numéro de téléphone !")) valid = false;
if(valid) if(!VerifTel(telfixe)) valid = false;
if(valid) if(!TestChampVide(telmob, "Vous devez saisir votre numéro de téléphone portable!")) valid = false;
if(valid) if(!VerifMobile(telmob)) valid = false;
if(valid) if(!TestChampVide(mail, "Vous devez saisir votre e-mail !")) valid = false;
if(valid) if(!TestEmail(mail)) valid = false;
if(valid) if(!TestChampVide(naissance, "Vous devez saisir votre date de naissance (jj/mm/aaaa) !")) valid = false;

if(valid) if(!TestChampVide(station, "Veuillez saisir au moins une ligne dans le champs Station près de chez vous !")) valid = false;
if(valid) if(!TestChampVide(experience, "Veuillez saisir au moins une ligne dans le champs Experience !")) valid = false;
if(valid) if(!TestChampVide(nb_heures, "Vous devez saisir un nombre d'heures d'intervention par semaine!")) valid = false;
valid = valid & checkDispo();
return valid;	
}
}



Mais je n'ai pas tester.
je ne suis pas sur de valid = valid & checkDispo();
je ne sais pas s'il faut doubler le "&".

a tester dirais-je !


[o-_-o]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
htaine Messages postés 13 Date d'inscription mercredi 16 mai 2007 Statut Membre Dernière intervention 11 février 2011
24 juin 2010 à 11:01
merci beaucoup pour ta proposition mais çà ne fonctionne pas.
Enfin si presque !:
après validation
-il détecte le premier champ vide, affiche le message d'alerte;
-tout de suite après, affiche l'alerte des checkbox vide;
-valide le formulaire, envoi du mail.
0
htaine Messages postés 13 Date d'inscription mercredi 16 mai 2007 Statut Membre Dernière intervention 11 février 2011
24 juin 2010 à 11:02
pardon oublié : même résultat en doublant le "&"
0
Zobibol Messages postés 469 Date d'inscription mercredi 9 janvier 2002 Statut Membre Dernière intervention 20 février 2017 6
24 juin 2010 à 11:19
Ha ha, alors il est possible d'essayer cela:


function checkDispo(){
var _table = document.getElementById("dispo_recrutement");
var _check = _table.getElementsByTagName("input");
for ( var i = 0; i<_check.length; i++){
// d'abord on s'assure que ce soit une check box
if ( _check[i].type =="checkbox"){
if ( _check[i].checked){
 retrun true;
}
}
}
return false;
}
function VerifRecrutement(form)
{
with(form)
{
var valid = true;
if(valid) if(!TestChampVide(nom, "Vous devez saisir votre nom !")) valid = false;
if(valid) if(!TestChampVide(prenom, "Vous devez saisir votre prénom !")) valid = false;
if(valid) if(!TestChampVide(naissance, "Vous devez saisir votre date de naissance !")) valid = false;
if(valid) if(!TestChampVide(adresse, "Vous devez saisir votre adresse !")) valid = false;
if(valid) if(!TestChampVide(cp, "Vous devez saisir votre code postal !")) valid = false;
if(valid) if(!TestCP(cp)) valid = false;
if(valid) if(!TestChampVide(ville, "Vous devez saisir votre ville !")) valid = false;
if(valid) if(!TestChampVide(telfixe, "Vous devez saisir votre numéro de téléphone !")) valid = false;
if(valid) if(!VerifTel(telfixe)) valid = false;
if(valid) if(!TestChampVide(telmob, "Vous devez saisir votre numéro de téléphone portable!")) valid = false;
if(valid) if(!VerifMobile(telmob)) valid = false;
if(valid) if(!TestChampVide(mail, "Vous devez saisir votre e-mail !")) valid = false;
if(valid) if(!TestEmail(mail)) valid = false;
if(valid) if(!TestChampVide(naissance, "Vous devez saisir votre date de naissance (jj/mm/aaaa) !")) valid = false;

if(valid) if(!TestChampVide(station, "Veuillez saisir au moins une ligne dans le champs Station près de chez vous !")) valid = false;
if(valid) if(!TestChampVide(experience, "Veuillez saisir au moins une ligne dans le champs Experience !")) valid = false;
if(valid) if(!TestChampVide(nb_heures, "Vous devez saisir un nombre d'heures d'intervention par semaine!")) valid = false;
if (!checkDispo()){ alert("merci de préciser une plage de dispo"); valid=false;}		
return valid;	
}
}


La, ça devrait marché un peut mieux (enfin, l'espoir fait vivre et je suis parti pour vivre super vieux ;o))

[o-_-o]
0
htaine Messages postés 13 Date d'inscription mercredi 16 mai 2007 Statut Membre Dernière intervention 11 février 2011
24 juin 2010 à 11:34
Heuu.. là çà réagit plus du tout. L'envoi part sans vérification.
0
Zobibol Messages postés 469 Date d'inscription mercredi 9 janvier 2002 Statut Membre Dernière intervention 20 février 2017 6
24 juin 2010 à 11:42
serait-il possible d'avoir toute la page html ?
parce que le temps que je mette en place tous les champs et les méthodes de tests...
Merci


[o-_-o]
0
htaine Messages postés 13 Date d'inscription mercredi 16 mai 2007 Statut Membre Dernière intervention 11 février 2011
24 juin 2010 à 11:53
Voici toute la page avec le formulaire





STRUCTURE











Civilité * :
Mr
Mme
Mlle




Nom * :



Prénom * :




Date de naissance * :
(jj/mm/aaaa)





Adresse * :




Code postal * :




Ville * :




Tél fixe * :




Tél mobile * :




Email * :




Situation familiale * :

Célibataire
Marié(e)
Divorcé(e)
Veuf(ve)
Pacsé(é)




Avez-vous des enfants ?*
Oui
Non




Si oui, indiquez leur age :




Travaillez-vous actuellement ?*
Oui
Non




Possedez-vous une voiture ?*
Oui
Non




Station RER/METRO/BUS la plus proche de chez vous * :




Temps d'expérience total : * :




Autre expériences professionnelles :




Nombre d'heure disponible par semaine * :







Quand êtes-vous disponible ? * :

Lundi,
Mardi,
Mercredi,
Jeudi,
Vendredi,
Samedi,
Dimanche,

----

Matin,
,
,
,
,
,
,
,

----

Après-midi,
,
,
,
,
,
,








* Champ obligatoire











0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 16
24 juin 2010 à 12:10
Bonjour à tous,
une façon plus light de faire tes vérif
function VerifRecrutement(form) {
  var szErreur ="";  // message erreur final
  var szCr = "\n";   // si affichage dans un alerte
  var szCr = "
"; // si affichage dans une DIV
  with(form) {
    if( !TestChampVide(nom,""))
      szErreur += "Vous devez saisir votre nom !" +szCr;
    if( !TestChampVide(prenom,""))
      szErreur += "Vous devez saisir votre prénom !" +szCr;
    if( !TestChampVide(naissance,""))
      szErreur += "Vous devez saisir votre date de naissance !" +szCr;
    if( !TestChampVide(adresse,""))
      szErreur += "Vous devez saisir votre adresse !" +szCr;
    if( !TestChampVide(cp, ""))
      szErreur += "Vous devez saisir votre code postal !" +szCr;
    //-----------
    //-- ETC ...
    //-----------
    if( !checkDispo())
      szErreur += "merci de préciser une plage de dispo";
    //-- si la chaine n'est pas vide on l'affiche
    if( szErreur.length)
      alert( szErreur);
    //-- return false ou true
    return( szErreur.length ==0);
  }
}

PS:
- que cela ne t'empêches pas de faire les vérif coté serveur
- si tu affiche une alert à chaque mauvaise vérif, bonjour si l'internaute à cliquer sur le bouton submit par erreur
;O)
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 16
24 juin 2010 à 12:14
au passage il y a une erreur de frappe dans la fonction checkDispo
if (_check[i].type == "checkbox") {
  if (_check[i].checked) {
    return true; /// ERREUR ICI return et non retrun
  }
}

;O)
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 16
24 juin 2010 à 12:23
encore un point, elle est définie où ta fonction TestChampVide

;O)
0
htaine Messages postés 13 Date d'inscription mercredi 16 mai 2007 Statut Membre Dernière intervention 11 février 2011
25 juin 2010 à 12:34
Ok merci PetoleTeam, je vais tester çà !
Le fonction TestChampVide est définie dans un autre fichier javascript qui contient toutes les verification du contenu des champs (si bon code postal, si bon nombre numéro tel, si bonne forme email, etc...)
J'attends le test de Zobibol pour fermer ce ticket.
Merci encore
0
Rejoignez-nous