Je souhaiterais savoir si javascript, que je ne connais pas du tout, pourrait répondre à ma problématique. [...] peut-il faire une restriction sur la seconde liste : ne proposer que les éléments correspondants à la première liste quand un élément de cette liste est sélectionné
<!doctype html> <html ng-app="App"> <head> <meta charset="utf-8">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.19/angular.min.js"></script> <script> var App = angular.module('App', []); App.controller('Ctrl', function ($scope) { // Ici tu mets tes données var lists = $scope.lists = [{brand:'Citroën', models:['C1','C3']}, {brand:'Renault', models:['Twingo','Clio']}]; // On initialise par défaut le premier élément de chaque liste ('Citroën' et 'C1' ici) var data = $scope.data = lists[0]; // {brand:'Citroën',models:['C1','C3']} var brand = $scope.brand = data.brand; // 'Citroën' var model = $scope.model = data.models[0]; // 'C1' }); </script>
</head> <body ng-controller="Ctrl"> <h3>Choisissez votre marque et votre modèle</h3> <!-- Le select sur les marques --> <select ng-model="data" ng-options="data.brand for data in lists" ng-change="brand=data.brand; model=data.models[0]"></select> <!-- quand il change on initialise le deuxième select avec le premier modèle --> <!-- Le select sur les modèles, qui prend ses données selon le choix fait dans le premier select --> <select ng-model="model" ng-options="model for model in data.models"></select> <h3>Vous avez choisi : </h3> <!-- On affiche le tout --> {{brand}} {{model}} </body> </html>
Dans les exemples que j'ai vu, le script et les données de la seconde liste sont dans le <head> de la page webLà comme ça ... je ne sais pas de quels exemples tu parles...
<html> <head> <title> TEST </title> </head> <body> <script type="text/javascript"> function maZoliFonction(elm){ alert("Le select \n id=" + elm.id + "\n Name = "+elm.name +" \nretourne la valeur:"+elm.value); } </script> <select name="test" id="idduselect" onchange="maZoliFonction(this)"> <option value=""> Merci de faire un choix </option> <option value ="1"> Premier choix</option> <option value ="Deux"> deuxieme choix</option> <option value ="3"> Troisieme choix</option> </select> </body> </html>
les recommandations seraient plutôt de mettre les scripts à la fin du body...Lorsque l'on peut oui... mais parfois il est nécessaire que les script soient accessible au moment où la page est générée (ou PENDANT qu'elle est générée)... et donc dans ce cas le script (la fonction) doit existe AVANT son appel dans la page.
<html> <head> <title> TEST </title> </head> <body> <script type="text/javascript"> function fonction1(elm){ document.getElementById(elm).value="test1"; } </script> Je vais remplir les input via un script JS : <input id="inp1" value="" type="text"> <script type="text/javascript"> // là ça marche.... fonction1("inp1"); </script> <input id="inp2" value="" type="text"> <script type="text/javascript"> // Là ça ne marche pas // et ça met une erreur... // ReferenceError: fonction2 is not defined // fonction2("inp2"); fonction2("inp2"); </script> </body> </html> <script type="text/javascript"> function fonction2(elm){ document.getElementById(elm).value="test2"; } </script>
13 sept. 2014 à 16:54
Après ta suggestion Ajax pourrais aussi m'intéresser. Pour les listes, ou autre-choses.
13 sept. 2014 à 17:35
Pour des "petites" listes déroulantes dont le contenu est "FIXE" ... tu n'auras pas besoin d'ajax...
Mais dès que tes listes commencent à être conséquentes et que tes infos sont stockées en base de données... Ajax est redoutable ^^
Si tu te mets au dev web... pour ce qui est du javascript je te conseil de commencer à regarder le Jquery
Même si c'est interessent (et parfois utile) de comprendre les "bases" (en utilisant du "pur" javascript)... jquery facilite grandement l'écriture de code....
Mais il te faut connaitre également le fonctionnement d'une page web... son contenu.... et donc sa manipulation...( le DOM )
13 sept. 2014 à 17:56
Je n'ai pas toutes les bases indispensables du web (le DOM ?). J'ai démarré l'informatique avec des ordinateurs sans écran, en assembleur sur cartes perforées pour gérer des données en tri/fusion depuis des lecteurs de bandes ;-)
13 sept. 2014 à 18:16
https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model
Autant dire que tu as commencé au siècle dernier ^^
Modifié par jee pee le 13/09/2014 à 19:34
40 ans, j'ai écris mon premier programme en 1974 sur cette machine : Olivetti Programma 101