From 9d2b8de5699f51ca253bac7d188ac109b3aa84b2 Mon Sep 17 00:00:00 2001 From: wei <> Date: Fri, 30 Mar 2007 13:09:22 +0000 Subject: Fixed #557. --- HISTORY | 1 + framework/Web/Javascripts/js/compressed/ajax.js | 13 +++++--- framework/Web/Javascripts/js/debug/ajax.js | 35 +++++++++++++++++++--- .../prado/activecontrols/activecontrols3.js | 35 +++++++++++++++++++--- 4 files changed, 72 insertions(+), 12 deletions(-) diff --git a/HISTORY b/HISTORY index 0a191f45..c5865343 100644 --- a/HISTORY +++ b/HISTORY @@ -12,6 +12,7 @@ BUG: Ticket#549 - set/get Timestamp on TDatePicker shound handle "null" values ( BUG: Ticket#550 - explicitly include TCallbackClientSide in TCallbackOptions (Qiang) BUG: Ticket#553 - I18N quickstart sample does not work (Qiang) BUG: Ticket#555 - TNumberFormat throws exception (Qiang) +BUG: Ticket#557 - TAutoComplete is not fool-proof (Wei) BUG: Ticket#560 - TActiveImageButton broken (Postback instead of Callback) (Wei) BUG: Ticket#573 - NumberFormat Bug (Wei) BUG: Ticket#579 - The rating list lost its Javascript in changeset [1775] (Wei). diff --git a/framework/Web/Javascripts/js/compressed/ajax.js b/framework/Web/Javascripts/js/compressed/ajax.js index c1ce7504..cc967514 100644 --- a/framework/Web/Javascripts/js/compressed/ajax.js +++ b/framework/Web/Javascripts/js/compressed/ajax.js @@ -224,14 +224,19 @@ Event.stop(event);}});Prado.WebUI.TActiveRadioButton=Class.extend(Prado.WebUI.TA Event.observe(this.element,"keydown",this.handleReturnKey.bind(this));if(this.options['AutoPostBack']==true) Event.observe(this.element,"change",this.doCallback.bindEvent(this,options));},doCallback:function(event,options) {var request=new Prado.CallbackRequest(options.EventTarget,options);request.dispatch();Event.stop(event);}});Prado.WebUI.TAutoComplete=Class.extend(Autocompleter.Base,Prado.WebUI.TActiveTextBox.prototype);Prado.WebUI.TAutoComplete=Class.extend(Prado.WebUI.TAutoComplete,{initialize:function(options) -{this.options=options;this.baseInitialize(options.ID,options.ResultPanel,options);Object.extend(this.options,{onSuccess:this.onComplete.bind(this)});if(options.AutoPostBack) +{this.options=options;this.hasResults=false;this.baseInitialize(options.ID,options.ResultPanel,options);Object.extend(this.options,{onSuccess:this.onComplete.bind(this)});if(options.AutoPostBack) this.onInit(options);},doCallback:function(event,options) {if(!this.active) {var request=new Prado.CallbackRequest(this.options.EventTarget,options);request.dispatch();Event.stop(event);}},onClick:function(event) {var element=Event.findElement(event,'LI');this.index=element.autocompleteIndex;this.selectEntry();this.hide();Event.fireEvent(this.element,"change");},getUpdatedChoices:function() -{var options=new Array(this.getToken(),"__TAutoComplete_onSuggest__");Prado.Callback(this.options.EventTarget,options,null,this.options);},onComplete:function(request,boundary) -{var result=Prado.Element.extractContent(request.transport.responseText,boundary);if(typeof(result)=="string"&&result.length>0) -this.updateChoices(result);}});Prado.WebUI.TTimeTriggeredCallback=Base.extend({constructor:function(options) +{var options=new Array(this.getToken(),"__TAutoComplete_onSuggest__");Prado.Callback(this.options.EventTarget,options,null,this.options);},selectEntry:function() +{if(this.hasResults) +{this.active=false;this.updateElement(this.getCurrentEntry());}},onComplete:function(request,boundary) +{var result=Prado.Element.extractContent(request.transport.responseText,boundary);if(typeof(result)=="string") +{if(result.length>0) +{this.hasResults=true;this.updateChoices(result);} +else +{this.active=false;this.hasResults=false;this.hide();}}},});Prado.WebUI.TTimeTriggeredCallback=Base.extend({constructor:function(options) {this.options=Object.extend({Interval:1},options||{});Prado.WebUI.TTimeTriggeredCallback.register(this);},startTimer:function() {setTimeout(this.onTimerEvent.bind(this),100);if(typeof(this.timer)=='undefined'||this.timer==null) this.timer=setInterval(this.onTimerEvent.bind(this),this.options.Interval*1000);},stopTimer:function() diff --git a/framework/Web/Javascripts/js/debug/ajax.js b/framework/Web/Javascripts/js/debug/ajax.js index 4b20a8de..1016f435 100644 --- a/framework/Web/Javascripts/js/debug/ajax.js +++ b/framework/Web/Javascripts/js/debug/ajax.js @@ -1978,6 +1978,7 @@ Prado.WebUI.TAutoComplete = Class.extend(Prado.WebUI.TAutoComplete, initialize : function(options) { this.options = options; + this.hasResults = false; this.baseInitialize(options.ID, options.ResultPanel, options); Object.extend(this.options, { @@ -2014,12 +2015,38 @@ Prado.WebUI.TAutoComplete = Class.extend(Prado.WebUI.TAutoComplete, Prado.Callback(this.options.EventTarget, options, null, this.options); }, - onComplete : function(request, boundary) + /** + * Overrides parent implements, don't update if no results. + */ + selectEntry: function() + { + if(this.hasResults) + { + this.active = false; + this.updateElement(this.getCurrentEntry()); + } + }, + + onComplete : function(request, boundary) { var result = Prado.Element.extractContent(request.transport.responseText, boundary); - if(typeof(result) == "string" && result.length > 0) - this.updateChoices(result); - } + if(typeof(result) == "string") + { + if(result.length > 0) + { + this.hasResults = true; + this.updateChoices(result); + } + else + { + this.active = false; + this.hasResults = false; + this.hide(); + } + } + }, + + }); /** diff --git a/framework/Web/Javascripts/prado/activecontrols/activecontrols3.js b/framework/Web/Javascripts/prado/activecontrols/activecontrols3.js index bb61d8ea..86521ca3 100644 --- a/framework/Web/Javascripts/prado/activecontrols/activecontrols3.js +++ b/framework/Web/Javascripts/prado/activecontrols/activecontrols3.js @@ -98,6 +98,7 @@ Prado.WebUI.TAutoComplete = Class.extend(Prado.WebUI.TAutoComplete, initialize : function(options) { this.options = options; + this.hasResults = false; this.baseInitialize(options.ID, options.ResultPanel, options); Object.extend(this.options, { @@ -134,12 +135,38 @@ Prado.WebUI.TAutoComplete = Class.extend(Prado.WebUI.TAutoComplete, Prado.Callback(this.options.EventTarget, options, null, this.options); }, - onComplete : function(request, boundary) + /** + * Overrides parent implements, don't update if no results. + */ + selectEntry: function() + { + if(this.hasResults) + { + this.active = false; + this.updateElement(this.getCurrentEntry()); + } + }, + + onComplete : function(request, boundary) { var result = Prado.Element.extractContent(request.transport.responseText, boundary); - if(typeof(result) == "string" && result.length > 0) - this.updateChoices(result); - } + if(typeof(result) == "string") + { + if(result.length > 0) + { + this.hasResults = true; + this.updateChoices(result); + } + else + { + this.active = false; + this.hasResults = false; + this.hide(); + } + } + }, + + }); /** -- cgit v1.2.3