source: src/django_gheat/website/static/jquery.chained.js@ 9272

Last change on this file since 9272 was 9240, checked in by dennisw, 13 years ago

Switched from jquery.chained.mini.js to more up-to-date version from https://github.com/tuupola/jquery_chained
The 3rd box now refreshes when another value in the 1st box is selected.

Deleted unused files.

File size: 2.7 KB
Line 
1/*
2 * Chained - jQuery non AJAX(J) chained selects plugin
3 *
4 * Copyright (c) 2010 Mika Tuupola
5 *
6 * Licensed under the MIT license:
7 * http://www.opensource.org/licenses/mit-license.php
8 *
9 */
10
11(function($) {
12
13 $.fn.chained = function(parent_selector, options) {
14
15 return this.each(function() {
16
17 /* Save this to self because this changes when scope changes. */
18 var self = this;
19 var backup = $(self).clone();
20
21 /* Handles maximum two parents now. */
22 $(parent_selector).each(function() {
23
24 $(this).bind("change", function() {
25 $(self).html(backup.html());
26
27 /* If multiple parents build classname like foo\bar. */
28 var selected = "";
29 $(parent_selector).each(function() {
30 selected += "\\" + $(":selected", this).val();
31 });
32 selected = selected.substr(1);
33
34 /* Also check for first parent without subclassing. */
35 /* TODO: This should be dynamic and check for each parent */
36 /* without subclassing. */
37 var first = $(parent_selector).first();
38 var selected_first = $(":selected", first).val();
39
40 $("option", self).each(function() {
41 /* Remove unneeded items but save the default value. */
42 if (!$(this).hasClass(selected) &&
43 !$(this).hasClass(selected_first) && $(this).val() !== "") {
44 $(this).remove();
45 }
46 });
47
48 /* If we have only the default value disable select. */
49 if (1 == $("option", self).size() && $(self).val() === "") {
50 $(self).attr("disabled", "disabled");
51 } else {
52 $(self).removeAttr("disabled");
53 }
54 $(self).trigger("change");
55 });
56
57 /* Force IE to see something selected on first page load. */
58 $("option", this).first().attr("selected", "selected");
59
60 /* Force updating the children. */
61 $(this).trigger("change");
62
63 });
64 });
65 };
66
67 /* Alias for those who like to use more English like syntax. */
68 $.fn.chainedTo = $.fn.chained;
69
70})(jQuery);
Note: See TracBrowser for help on using the repository browser.