62 lines
No EOL
1.7 KiB
Text
62 lines
No EOL
1.7 KiB
Text
Autosuggest
|
|
===========
|
|
|
|
Adapted from: Timothy Groves - http://www.brandspankingnew.net
|
|
|
|
.. data:: cur_autosug
|
|
|
|
Live Autosuggest object
|
|
|
|
.. function:: hide_autosuggest()
|
|
|
|
Hide the Live Autosuggest (if exists)
|
|
|
|
.. class:: AutoSuggest(id, param)
|
|
|
|
Create a new autosuggest object
|
|
|
|
Overriding the default call
|
|
---------------------------
|
|
|
|
* To override the default server call, override the method `doAjaxRequest`
|
|
* To override updation in the INPUT element, override the method `custom_select`
|
|
|
|
Example
|
|
-------
|
|
|
|
Example where email id is to be retrieved::
|
|
|
|
// ---- add auto suggest ----
|
|
var opts = { script: '', json: true, maxresults: 10 };
|
|
|
|
var as = new AutoSuggest(d.widgets['To'], opts);
|
|
as.custom_select = function(txt, sel) {
|
|
// ---- add to the last comma ----
|
|
var r = '';
|
|
var tl = txt.split(',');
|
|
for(var i=0;i<tl.length-1;i++) r=r+tl[i]+',';
|
|
r = r+(r?' ':'')+sel;
|
|
if(r[r.length-1]==NEWLINE) r=substr(0,r.length-1);
|
|
return r;
|
|
}
|
|
|
|
// ---- override server call ----
|
|
as.doAjaxRequest = function(txt) {
|
|
var pointer = as; var q = '';
|
|
|
|
// ---- get last few letters typed ----
|
|
var last_txt = txt.split(',');
|
|
last_txt = last_txt[last_txt.length-1];
|
|
|
|
// ---- show options ----
|
|
var call_back = function(r,rt) {
|
|
as.aSug = [];
|
|
if(!r.cl) return;
|
|
for (var i=0;i<r.cl.length;i++) {
|
|
as.aSug.push({'id':r.cl[i], 'value':r.cl[i], 'info':''});
|
|
}
|
|
as.createList(as.aSug);
|
|
}
|
|
$c('get_contact_list',{'select':_e.email_as_field, 'from':_e.email_as_dt, 'where':_e.email_as_in, 'txt':(last_txt ? strip(last_txt) : '%')},call_back);
|
|
return;
|
|
} |