source: Dev/trunk/src/client/dojox/form/MultiComboBox.js @ 529

Last change on this file since 529 was 483, checked in by hendrikvanantwerpen, 11 years ago

Added Dojo 1.9.3 release.

File size: 1.6 KB
Line 
1define([
2        "dojo/_base/kernel",
3        "dijit/form/ValidationTextBox",
4        "dijit/form/ComboBoxMixin",
5        "dojo/_base/declare"
6], function(kernel, ValidationTextBox, ComboBoxMixin, declare){
7kernel.experimental("dojox.form.MultiComboBox");
8
9return declare("dojox.form.MultiComboBox", [ValidationTextBox, ComboBoxMixin],{
10        // summary:
11        //              A ComboBox that accepts multiple inputs on a single line
12
13        // delimiter: String
14        //              The character to use to separate items in the ComboBox input
15        delimiter: ",",
16
17        _previousMatches: false,
18
19        _setValueAttr: function(value){
20                if(this.delimiter && value.length != 0){
21                        value = value+this.delimiter+" ";
22                        arguments[0] = this._addPreviousMatches(value);
23                }
24                this.inherited(arguments);
25        },
26
27        _addPreviousMatches: function(/*String*/ text){
28                if(this._previousMatches){
29                        if(!text.match(new RegExp("^"+this._previousMatches))){
30                                text = this._previousMatches+text;
31                        }
32                        text = this._cleanupDelimiters(text);
33                }
34                return text; // String
35        },
36
37        _cleanupDelimiters: function(/*String*/ text){
38                if(this.delimiter){
39                        text = text.replace(new RegExp("  +"), " ");
40                        text = text.replace(new RegExp("^ *"+this.delimiter+"* *"), "");
41                        text = text.replace(new RegExp(this.delimiter+" *"+this.delimiter), this.delimiter);
42                }
43                return text;
44        },
45
46        _autoCompleteText: function(/*String*/ text){
47                arguments[0] = this._addPreviousMatches(text);
48                this.inherited(arguments);
49        },
50
51        _startSearch: function(/*String*/ text){
52                text = this._cleanupDelimiters(text);
53                var re = new RegExp("^.*"+this.delimiter+" *");
54
55                if((this._previousMatches = text.match(re))){
56                        arguments[0] = text.replace(re, "");
57                }
58                this.inherited(arguments);
59        }
60});
61});
Note: See TracBrowser for help on using the repository browser.