1: | <?php
|
2: | |
3: | |
4: | |
5: | |
6: |
|
7: |
|
8: |
|
9: |
|
10: | class Autocomplete extends Control{
|
11: | private $url = "";
|
12: | private $minlen = "1";
|
13: | private $req = false;
|
14: | private $formName = '';
|
15: | private $msgName = '';
|
16: | private $synccomp = '';
|
17: |
|
18: | public function oncreate($element){
|
19: | $this->setHTMLName("");
|
20: | $this->url = getEventURL($this->name.'_autocomplete');
|
21: | }
|
22: | public function setForm($val) { $this->formName = $val;}
|
23: | public function setMsgName($val) { $this->msgName = $val;}
|
24: | public function setRequired() {
|
25: | if($this->issubmit){
|
26: | if(strlen($this->value) < 1){
|
27: | setErr($this->name,"Can not submit Empty");
|
28: | }
|
29: | }
|
30: | $this->req = true;
|
31: | }
|
32: |
|
33: | public function setURL($val){
|
34: | $this->url = $val;
|
35: | }
|
36: | public function setMinLen($val){
|
37: | $this->minlen = $val;
|
38: | }
|
39: | public function sendData($val){
|
40: |
|
41: | SphpBase::JSServer()->addJSONBlock('js','proces','
|
42: | '. SphpBase::sphp_api()->getJSArray("data",$val) .'
|
43: | var term = "'.$_REQUEST['term'].'" ;
|
44: | '.$this->name.'_cache[term] = data;
|
45: | '.$this->name.'_response(data);
|
46: | ');
|
47: |
|
48: | }
|
49: |
|
50: | public function onjsrender(){
|
51: | global $jquerypath;
|
52: | |
53: | |
54: | |
55: | |
56: | |
57: | |
58: | |
59: | |
60: | |
61: |
|
62: | if($this->formName!=''){
|
63: | if($this->req){
|
64: | addFooterJSFunctionCode("{$this->formName}_submit", "{$this->name}req", "
|
65: | ctlReq['$this->name']= Array('$this->msgName','TextField');");
|
66: | }
|
67: | }
|
68: |
|
69: | addHeaderJSFunction($this->name.'_autocomplete', "function ".$this->name.'_autocomplete(request){ ' , "
|
70: | clearTimeout(this.tmr1); this.tmr1 = setTimeout(function(){
|
71: | getURL('$this->url',request);
|
72: | },1000);
|
73: | }");
|
74: |
|
75: | addHeaderJSCode($this->name, ' window["'.$this->name.'_cache"] = {}; window["'.$this->name.'_response"] = null;');
|
76: | addHeaderJSFunctionCode('ready',$this->name,'
|
77: | $("#'.$this->name.'").autocomplete({
|
78: | minLength: '.$this->minlen.',
|
79: | source: function( request, response ) {
|
80: | var term = request.term;
|
81: | if ( term in '.$this->name.'_cache ) {
|
82: | response('.$this->name.'_cache[term]);
|
83: | return;
|
84: | }
|
85: | '.$this->name.'_response = response;
|
86: | '.$this->name.'_autocomplete(request);
|
87: |
|
88: | }
|
89: | });
|
90: | ');
|
91: | }
|
92: |
|
93: |
|
94: |
|
95: | }
|
96: | ?> |