|
|
|
@ -2,7 +2,7 @@ |
|
|
|
|
|
|
|
|
|
Homepage: http://yourcmc.ru/wiki/SimpleAutocomplete
|
|
|
|
|
License: MPL 2.0+ (http://www.mozilla.org/MPL/2.0/)
|
|
|
|
|
Version: 2015-01-16 |
|
|
|
|
Version: 2015-03-25 |
|
|
|
|
(c) Vitaliy Filippov 2011-2015 |
|
|
|
|
|
|
|
|
|
Usage: |
|
|
|
@ -15,11 +15,12 @@ |
|
|
|
|
dataLoader(hint, value[, more]) |
|
|
|
|
Callback which should load autocomplete options and then call: |
|
|
|
|
hint.replaceItems(newOptions, append) |
|
|
|
|
newOptions = [ [ name, value, disabled, checked ] ], [ name, value ], ... ] |
|
|
|
|
newOptions = [ [ name, value, disabled, checked OR id ] ], [ name, value ], ... ] |
|
|
|
|
name = HTML option name |
|
|
|
|
value = plaintext option value |
|
|
|
|
disabled = prevent selection of this option |
|
|
|
|
checked = only meaningful when multipleListener is set |
|
|
|
|
checked = (when multipleListener is set) is the item checked initially |
|
|
|
|
id = (when idField is set) the value ID for idField |
|
|
|
|
append = 'more' parameter should be passed here |
|
|
|
|
Callback parameters: |
|
|
|
|
hint |
|
|
|
@ -61,6 +62,10 @@ |
|
|
|
|
of the list, and SimpleAutocomplete will issue another request to |
|
|
|
|
dataLoader with incremented 'more' parameter when it will be clicked. |
|
|
|
|
You can also set moreMarker to false to disable this feature. |
|
|
|
|
idField |
|
|
|
|
If you specify an ID here, the selected value ID will be put into |
|
|
|
|
a hidden field with this ID, while the original hinted input will |
|
|
|
|
just contain the name of that value. |
|
|
|
|
persist |
|
|
|
|
If true, the hint layer will never be hidden. You can use it to create |
|
|
|
|
multiselect-like controls (see example at the homepage). |
|
|
|
@ -90,8 +95,11 @@ var SimpleAutocomplete = function(input, dataLoader, params) |
|
|
|
|
this.prompt = params.prompt; |
|
|
|
|
this.delay = params.delay; |
|
|
|
|
this.moreMarker = params.moreMarker; |
|
|
|
|
this.idField = params.idField; |
|
|
|
|
this.persist = params.persist; |
|
|
|
|
this.className = params.className || 'hintLayer'; |
|
|
|
|
if (this.idField && typeof(this.idField) == 'string') |
|
|
|
|
this.idField = document.getElementById(this.idField); |
|
|
|
|
|
|
|
|
|
// Default values
|
|
|
|
|
if (this.moreMarker === undefined) |
|
|
|
@ -317,6 +325,8 @@ SimpleAutocomplete.prototype.selectItem = function(index) |
|
|
|
|
if (!this.multipleDelimiter && !this.multipleListener) |
|
|
|
|
{ |
|
|
|
|
this.input.value = this.items[index][1]; |
|
|
|
|
if (this.idField) |
|
|
|
|
this.idField.value = this.items[index][3]; |
|
|
|
|
this.hide(); |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
@ -455,6 +465,8 @@ SimpleAutocomplete.prototype.onChange = function(force) |
|
|
|
|
this.more = 0; |
|
|
|
|
if (v != this.curValue || force) |
|
|
|
|
{ |
|
|
|
|
if (this.idField) |
|
|
|
|
this.idField.value = ''; |
|
|
|
|
this.curValue = v; |
|
|
|
|
if (!this.delay || force) |
|
|
|
|
this.dataLoader(this, v, this.more); |
|
|
|
|