Champs obligatoir SI.........

ViPHP
ViPHP | 2291 Messages

31 juil. 2006, 12:02

Bonjour,
J'ai un menu déroulant dans un formulaire et je voudrais rendre obligatoire de remplir un INPUT mais uniquement si une des option du SELECT à été selectionner...
Comment pourraige faire cela ?

Code : Tout sélectionner

function menu_md11(){ var indice_selectionne=document.prestations_tvd.compris49.selectedIndex; var chango=document.prestations_tvd.compris49.options[indice_selectionne].value; switch (chango){ case "Monteur hors poste":document.prestations_tvd.texter49.value="TA60";break; case "Monteur hors poste suppl hors jo":document.prestations_tvd.texter49.value="TA601";break; case "Remontée mécanique":document.prestations_tvd.texter49.value="TA37";break; case "Tranchée en voirie":document.prestations_tvd.texter49.value="TA?";break; case "Raccordement complet":document.prestations_tvd.texter49.value="TA?";break; case "Elévateur avec chauffeur":document.prestations_tvd.texter49.value="TA62";break; case "Elévateur avec chauffeur sup hors":document.prestations_tvd.texter49.value="TA624";break; case "Reprise de racc raccour":document.prestations_tvd.texter49.value="TA52";break; case "Reprise de racc allongement":document.prestations_tvd.texter49.value="TA53";break; case "Pose de câble standart RG6":document.prestations_tvd.texter49.value="TA510";break; case "Pose de câble haute perfo RG11":document.prestations_tvd.texter49.value="TA511";break; default:document.prestations_tvd.texter49.value="Un choix svp.";break; } } //Fin des menu déroulant.... //fonction vérification des champs (chantier et fin). function check1() { if (document.prestations_tvd.chantier.value == '') { alert('Référence chantier obligatoire pour la facturation.'); document.prestations_tvd.chantier.focus(); return false; } if (document.prestations_tvd.fin.value == '0') { alert('Merci de spécifier si le chantier est toujours en cours ou terminé ?.'); document.prestations_tvd.fin.focus(); return false; } return true; }
Dans l'exemple ici je voudrais rendre un champs obligatoire quand l'option
TA511 est selectionner

D'avance merci
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

31 juil. 2006, 13:05

Salut,

Pour faire simple tu peux vérifier si la valeur de la liste est différente de la valeur par défaut. Si c'est le cas alors le champ devient obligatoire sinon tu ne fait rien.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

ViPHP
ViPHP | 2291 Messages

31 juil. 2006, 13:24

Euuuh :oops: oui je pense.
En réalité j'ai un champs dans le formulaire qui doit être remplie ci l'utilisateur renseigne le champs TA106 du menu déroulant
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

31 juil. 2006, 13:43

Pour avoir un code plus clair utilise le moins possible de longues chaines comme tu l'as fait pour les "case" :
function menu_md11(indice)
{ 
  var valeur;
  switch (indice)
 {
    case "1":"TA60";break;
    case "2":valeur="TA601";break;
    case "3":valeur="TA37";break;
    case "4":valeur="TA?";break;
    case "5":valeur="TA?";break;
    case "6":valeur="TA62";break;
    case "7":valeur="TA624";break;
    case "8":valeur="TA52";break;
    case "9":valeur="TA53";break;
    case "10":valeur="TA510";break;
    case "11":valeur="TA511";break;
    default:valeur="Un choix svp.";break;
  }
  document.prestations_tvd.texter49.value= valeur;
} 
avec la liste:
<select onchange="menu_md11(this.selectedIndex);">
devrait avoir le même effet.

Ensuite sur la validation:
<form onsubmit="verif();">
function verif()
{
   var retour = true;
   var indice_selectionne=document.prestations_tvd.compris49.selectedIndex;
   if(indice_selectionne != 0)
   {
       // ici verifier si le champ qui doit être remplis en cas de sélection dans la liste l'est.
         if( non renseigné )
            retour = false;        
   }
    return retour;
}

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute