Bug Tracker

Ticket #3098: jquery.autocomplete.completed-class.patch

File jquery.autocomplete.completed-class.patch, 2.3 KB (added by shebditch, 12 years ago)
Line 
1*** jquery.autocomplete.js.old  2008-06-28 13:26:49.000000000 +0100
2--- jquery.autocomplete.js      2008-06-28 13:27:47.000000000 +0100
3***************
4*** 215,231 ****
5                }
6               
7                $input.val(v);
8                hideResultsNow();
9                $input.trigger("result", [selected.data, selected.value]);
10                return true;
11        }
12       
13        function onChange(crap, skipPrevCheck) {
14-               if( lastKeyPressCode == KEY.DEL ) {
15-                       select.hide();
16-                       return;
17-               }
18-               
19                var currentValue = $input.val();
20               
21                if ( !skipPrevCheck && currentValue == previousValue )
22--- 215,229 ----
23                }
24               
25                $input.val(v);
26+               if( options.completedClass ){
27+                       $input.addClass(options.completedClass);
28+               }
29                hideResultsNow();
30                $input.trigger("result", [selected.data, selected.value]);
31                return true;
32        }
33       
34        function onChange(crap, skipPrevCheck) {
35                var currentValue = $input.val();
36               
37                if ( !skipPrevCheck && currentValue == previousValue )
38***************
39*** 241,246 ****
40--- 239,245 ----
41                        request(currentValue, receiveData, hideResultsNow);
42                } else {
43                        stopLoading();
44+                       clearCompletedClass();
45                        select.hide();
46                }
47        };
48***************
49*** 279,284 ****
50--- 278,303 ----
51                }
52        };
53 
54+       // Add class to input when completely matches term
55+       function addCompletedClass(data){
56+               if( options.completedClass ){
57+                       var v = lastWord($input.val()).toLowerCase();
58+                       for (var i=0; i < data.length; i++) {
59+                               if( v == data[i].value.toLowerCase() ) {
60+                                       $input.addClass(options.completedClass);
61+                                       return;
62+                               }
63+                       }
64+                       $input.removeClass(options.completedClass);
65+               }
66+       };
67+
68+       function clearCompletedClass(){
69+               if ( options.completedClass ){
70+                       $input.removeClass(options.completedClass);
71+               }
72+       }
73+
74        function hideResults() {
75                clearTimeout(timeout);
76                timeout = setTimeout(hideResultsNow, 200);
77***************
78*** 315,322 ****
79--- 334,343 ----
80                        stopLoading();
81                        select.display(data, q);
82                        autoFill(q, data[0].value);
83+                       addCompletedClass(data);
84                        select.show();
85                } else {
86+                       clearCompletedClass();
87                        hideResultsNow();
88                }
89        };
90***************
91*** 389,394 ****
92--- 410,416 ----
93        inputClass: "ac_input",
94        resultsClass: "ac_results",
95        loadingClass: "ac_loading",
96+       completedClass: "ac_completed",
97        minChars: 1,
98        delay: 400,
99        matchCase: false,