Details
-
Type: Bug
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: 3.3
-
Fix Version/s: EE-3.3.0.GA, 4.0.BETA, 4.0
-
Component/s: ACE-Components
-
Labels:None
-
Environment:Internet explorer (version 8)
-
Assignee Priority:P1
-
ICEsoft Forum Reference:
-
Workaround Exists:Yes
-
Workaround Description:
Description
If on <ace:autoCompleteEntry> we specify height, and scrollbox with some values appear, if we click on scrollbox, it is automatically closed.
This issue occur on IE. On Firefox working OK.
I investigated this issue and problem is that when we click on scrollbox, onblur event is fired (on IE).
This issue occur on IE. On Firefox working OK.
I investigated this issue and problem is that when we click on scrollbox, onblur event is fired (on IE).
Issue Links
- depends on
-
ICE-9303 ICEfaces JS extends native prototypes overwriting expected behaviours
- Closed
Please apply same fix for ace:combobox, same location (onblur) method in combobox.js.
Here is complete Onblur method for combobox.js
onBlur: function(event) {
{ posx = e.pageX; posy = e.pageY; }var self = this;
if (navigator.userAgent.indexOf("MSIE") >= 0) {
//FIX is height is set and user click on scrollbar. If height is not set, value=auto
var n=this.height;
if (n!=null && n!='' && typeof n === 'number' && n % 1 == 0) {
var $box = this.root.find('.ui-combobox-value');
var box = ice.ace.jq($box.get(0));
var posx=0; var posy=0;
var e = window.event;
if (e.pageX || e.pageY)
else if (e.clientX || e.clientY)
{ posx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft; posy = e.clientY + document.body.scrollTop + document.documentElement.scrollTop; }var offset = box.offset();
var boxTop = offset.top;
var boxLeft = offset.left;
var widthX=boxLeft+box.width()+20;
var heightX=boxTop+box.height()+parseFloat(this.height)+20;
if ( (posx>boxLeft && posx<=widthX) && (posy>boxTop && posy<heightX) )
{ this.element.focus(); return; }}
}
this.hideObserver = setTimeout(function () { // needed to make click events work
{ self.element.value = self.cfg.inFieldLabel; element.addClass(self.cfg.inFieldLabelStyleClass); element.data("labelIsInField", true); }self.hide();
var element = ice.ace.jq(self.element);
if (ice.ace.jq.trim(self.element.value) == '' && self.cfg.inFieldLabel)
}, 400);
{ice.ace.ab(self.ajaxBlur);}this.hasFocus = false;
setFocus('');
if (this.ajaxBlur) {
if (this.blurObserver) clearTimeout(this.blurObserver);
this.ajaxBlur.params = this.ajaxBlur.params || {};
var self = this;
this.blurObserver = setTimeout(function() { try
catch(e){} }, 390);
}
},