Bonjour,
j'ai un souci concernant un formulaire avec des select basés sur des variables.
Je vous mets un exemple concret :
voici la définition des variables


var affiches = {				
					  "Papier 90g" : {
						  "50 Exemplaires" : {
							  "Livraison économique (6-7 jours)" : 65,
							  "Livraison express (4-5 jours)" : 69,
							  "Livraison urgente (2-3 jours)" : 75
							  },
						  "100 Exemplaires" : {
							  "Livraison économique (6-7 jours)" : 67,
							  "Livraison express (4-5 jours)" : 72,
							  "Livraison urgente (2-3 jours)" : 77
							  },
						  "250 Exemplaires" : {
							  "Livraison économique (6-7 jours)" : 78,
							  "Livraison express (4-5 jours)" : 83,
							  "Livraison urgente (2-3 jours)" : 88
							  },
						  "500 Exemplaires" : {
							  "Livraison économique (6-7 jours)" : 88,
							  "Livraison express (4-5 jours)" : 94,
							  "Livraison urgente (2-3 jours)" : 102	
							  },
						 },  
					  "Papier 115g" : {
						  "20 Exemplaires" : {
							  "Livraison économique (6-7 jours)" : 30,
							  "Livraison express (4-5 jours)" : 52
							  },
						  "30 Exemplaires" : {
							  "Livraison économique (6-7 jours)" : 47,
							  "Livraison express (4-5 jours)" : 62
							  },
						  "50 Exemplaires" : {
							  "Livraison économique (6-7 jours)" : 65,
							  "Livraison express (4-5 jours)" : 69,
							  "Livraison urgente (2-3 jours)" : 75
							  },
						  "100 Exemplaires" : {
							  "Livraison économique (6-7 jours)" : 68,
							  "Livraison express (4-5 jours)" : 72,
							  "Livraison urgente (2-3 jours)" : 77
							  },
						  "250 Exemplaires" : {
							  "Livraison économique (6-7 jours)" : 79,
							  "Livraison express (4-5 jours)" : 84,
							  "Livraison urgente (2-3 jours)" : 89
							  },
						  "500 Exemplaires" : {
							  "Livraison économique (6-7 jours)" : 91,
							  "Livraison express (4-5 jours)" : 97,
							  "Livraison urgente (2-3 jours)" : 104
							  },
						 },  				
				};

le script :

function calcul() {
	if(!affiches) return false;
	var papierDiv = document.getElementById("papier");
	var papier = papierDiv.options[papierDiv.selectedIndex].value;
	if(!papier) return false;
	var quantiteDiv = document.getElementById("quantite");
	var quantite = quantiteDiv.options[quantiteDiv.selectedIndex].value;
	if(!quantite) return false;
	var delaiDiv = document.getElementById("delai");
	var delai = delaiDiv.options[delaiDiv.selectedIndex].value;
	if(!delai) return false;
	var prix = affiches[papier][quantite][delai];
	document.getElementById("prix").innerHTML = prix;
    document.getElementById("prix_send").value = prix;
	

}


et le code html :


<select name="papier" id="papier" onChange="calcul()" class="select">
				<option value="">Selectionnez le papier /m2</option>
				<option value="Papier 90g">Papier 90g</option>
				<option value="Papier 115g">Papier 115g</option>
			</select>
			<br/>
			<select name="quantite" id="quantite" onChange="calcul()" class="select">
				<option value="">Selectionnez la quantité</option>
				<option value="20 Exemplaires">20 Exemplaires</option>
				<option value="30 Exemplaires">30 Exemplaires</option>
				<option value="50 Exemplaires">50 Exemplaires</option>
				<option value="100 Exemplaires">100 Exemplaires</option>
				<option value="250 Exemplaires">250 Exemplaires</option>
				<option value="500 Exemplaires">500 Exemplaires</option>
			</select>
			<br/>
			<select name="delai" id="delai" onChange="calcul()" class="select">
				<option value="">Selectionnez la livraison</option>
				<option value="Livraison économique (6-7 jours)">Livraison économique - (6-7 jours)</option>
				<option value="Livraison express (4-5 jours)">Livraison express - (4-5 jours)</option>
				<option value="Livraison urgente (2-3 jours)">Livraison urgente - (2-3 jours)</option>
			</select>
<div id="conteneur_prix"><div id="prix"></div></div>



Le problème est que concrètement je ne veux pas proposer 20 et 30 exemplaires pour le papier 90g, même si on peux les sélectionner, que la case prix soit vide, mais ici le problème c'est que cela fait bugger le formulaire. Y'a t'il une solution ou faut-il que je fasse plusieurs formulaires ?
Par avance merci
Je connais pas, donc je vais peut-être t'orienter sur une fausse piste (à vérifier quand même), Angular devrait pouvoir t'aider sur ce genre de choses.

Sinon, tu peux aussi utiliser jQuery et masquer les options non désirés quand on sélectionne le 90g.
Sinon, c'est moins propre mais dans "affiches" tu peux mettre la quantité non souhaité et mettre un prix à 0 non ?

EDIT : je parle de jQuery par réflexe mais JS est capable de faire de même.

EDIT2 : Oui en fait non pour Angular, pas comme tu as fais ton code. De plus si tu connais pas ça risque d'être long à mettre en place.
Modifié par MagicCarpet (22 Aug 2013 - 16:17)