Problème de liste déroulante JQuery Cascade?

J’utilise un plugin Cascade basé sur JQuery, probablement que ça fonctionne, mais j’ai trouvé beaucoup de problèmes avec cela

Peut-être que quelqu’un déjà confronté à ce plugin pourrait peut-être aider.

Donc, j’utilise ce plugin pour la filtration d’emplacement

emplacement http://soffr.miximages.com/jquery/1246819525-clip-2kb.png emplacement http://soffr.miximages.com/jquery/1246819608-clip-3kb.png

Voici mon code CS:

public JsonResult getChildren(ssortingng val) { if (val.IsNotNull()) { int lId = val.ToInt(); Cookie.Location = val.ToInt(); var forJSON = from h in Location.SubLocationsLoaded(val.ToInt()) select new { When = val, Id = h.Id, Name = h.Name, LocationName = h.LocationType.Name }; return this.Json(forJSON.ToArray()); } else return null; } 

Voici mon code JS:

  function commonMatch(selectedValue) { $("#selectedLocation").val(selectedValue); return this.When == selectedValue; }; function commonTemplate(item) { return "" + item.Name + ""; }; $(document).ready(function() { $("#chained_child").cascade("#Counsortinges", { ajax: { url: '/locations/getChildren' }, template: commonTemplate, match: commonMatch }).bind("loaded.cascade", function(e, target) { $(this).prepend("------[%Select] Län------"); $(this).find("option:first")[0].selected = true; }); $("#chained_sub_child").cascade("#chained_child", { ajax: { url: '/locations/getChildren' }, template: commonTemplate, match: commonMatch }).bind("loaded.cascade", function(e, target) { $(this).prepend("------[%Select] Kommun------"); $(this).find("option:first")[0].selected = true; }); $("#chained_sub_sub_child").cascade("#chained_sub_child", { ajax: { url: '/locations/getChildren' }, template: commonTemplate, match: commonMatch }).bind("loaded.cascade", function(e, target) { $(this).prepend("------[%Select] Stad------"); $(this).find("option:first")[0].selected = true; }); }); 

J’ai ajouté une condition à jquery.cascade.ext.js

 if (opt.getParentValue(parent) != "empty") $.ajax(_ajax); 

Pour empêcher la demande Ajax sans valeur sélectionnée, mais j’ai rencontré un problème, lorsque je réinitialise la sélection dans la première case 3d boîte et ci-dessous ne rafraîchit pas: WTF? http://soffr.miximages.com/jquery/1246822534-clip-2kb.png

Et deuxième question: je voudrais savoir où est le meilleur endroit pour créer ma propre fonction qui fera quelque chose, avec une exigence: j’ai besoin de savoir que toutes les boîtes finies fonctionnent.

Si quelqu’un travaillait à l’intérieur, faites-moi savoir, nous pourrions peut-être trouver ensemble une solution. Merci dans les conseils …

Le problème avec le code du plugin d’origine est qu’il ne déclenche pas l’événement change après avoir manipulé le menu déroulant.

De plus, j’aime penser à ce problème en termes de «dépendance» et non de «cascade». J’ai essayé de créer un plugin simple et une page de démonstration qui montre comment tout cela fonctionne.

Démo: http://jsbin.com/unope

Code: http://jsbin.com/unope/edit

Laissez-moi vous expliquer ce que j’ai fait. J’ai créé le plugin nommé ‘dépendant’ qui vous permet d’associer une dépendance à une liste déroulante.

par exemple

 $('#dropDown2').dependent({ dependency : 'dropDown1', values : getValues }); 

Le code ci-dessus suggère que dropDown2 dépend de dropDown1. Ainsi, chaque fois que la valeur de dropDown1 change, elle appelle votre fonction getValues ​​(en la transmettant à dropDown1). Vous devez renvoyer les valeurs pertinentes à partir de votre fonction getValues ​​et les renseigner dans dropDown2.

N’oubliez pas que ce code n’est pas générique, je l’ai rapidement écrit pour illustrer le concept. Vous devrez le peaufiner davantage pour obtenir le résultat souhaité.

Faites moi savoir si vous avez des questions.