Bug fix when select parent pages with special HTML characters. Related issue #1072

This commit is contained in:
Diego Najar 2019-09-08 10:17:12 +02:00
parent 323ab6462b
commit 7aba5362c6
4 changed files with 44 additions and 13 deletions

View File

@ -1,9 +1,36 @@
.autocomplete-suggestions {
text-align: left; cursor: default; border: 1px solid #ccc; border-top: 0; background: #fff; box-shadow: -1px 1px 3px rgba(0,0,0,.1);
/* core styles should not be changed */
position: absolute; display: none; z-index: 9999; max-height: 254px; overflow: hidden; overflow-y: auto; box-sizing: border-box;
}
.autocomplete-suggestion { position: relative; padding: 0 .6em; line-height: 23px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-size: 1.02em; color: #333; }
.autocomplete-suggestion b { font-weight: normal; color: #1f8dd6; }
.autocomplete-suggestion.selected { background: #f0f0f0; }
text-align: left;
cursor: default;
border: 1px solid #ccc;
border-top: 0;
background: #fff;
box-shadow: -1px 1px 3px rgba(0, 0, 0, .1);
/* core styles should not be changed */
position: absolute;
display: none;
z-index: 9999;
max-height: 254px;
overflow: hidden;
overflow-y: auto;
box-sizing: border-box;
}
.autocomplete-suggestion {
position: relative;
padding: 0 .6em;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
color: #333;
/* for below styles, match semantic presentation */
font-size: 1em;
line-height: 1;
padding-top: 0.78571429rem;
padding-bottom: 0.78571429rem;
}
.autocomplete-suggestion b {
font-weight: normal;
color: #1f8dd6;
}
.autocomplete-suggestion.selected {
background: #f0f0f0;
}

View File

@ -1,3 +1,7 @@
// jQuery autoComplete v1.0.7
// https://github.com/Pixabay/jQuery-autoComplete
!function(e){e.fn.autoComplete=function(t){var o=e.extend({},e.fn.autoComplete.defaults,t);return"string"==typeof t?(this.each(function(){var o=e(this);"destroy"==t&&(e(window).off("resize.autocomplete",o.updateSC),o.off("blur.autocomplete focus.autocomplete keydown.autocomplete keyup.autocomplete"),o.data("autocomplete")?o.attr("autocomplete",o.data("autocomplete")):o.removeAttr("autocomplete"),e(o.data("sc")).remove(),o.removeData("sc").removeData("autocomplete"))}),this):this.each(function(){function t(e){var t=s.val();if(s.cache[t]=e,e.length&&t.length>=o.minChars){for(var a="",c=0;c<e.length;c++)a+=o.renderItem(e[c],t);s.sc.html(a),s.updateSC(0)}else s.sc.hide()}var s=e(this);s.sc=e('<div class="autocomplete-suggestions '+o.menuClass+'"></div>'),s.data("sc",s.sc).data("autocomplete",s.attr("autocomplete")),s.attr("autocomplete","off"),s.cache={},s.last_val="",s.updateSC=function(t,o){if(s.sc.css({top:s.offset().top+s.outerHeight(),left:s.offset().left,width:s.outerWidth()}),!t&&(s.sc.show(),s.sc.maxHeight||(s.sc.maxHeight=parseInt(s.sc.css("max-height"))),s.sc.suggestionHeight||(s.sc.suggestionHeight=e(".autocomplete-suggestion",s.sc).first().outerHeight()),s.sc.suggestionHeight))if(o){var a=s.sc.scrollTop(),c=o.offset().top-s.sc.offset().top;c+s.sc.suggestionHeight-s.sc.maxHeight>0?s.sc.scrollTop(c+s.sc.suggestionHeight+a-s.sc.maxHeight):0>c&&s.sc.scrollTop(c+a)}else s.sc.scrollTop(0)},e(window).on("resize.autocomplete",s.updateSC),s.sc.appendTo("body"),s.sc.on("mouseleave",".autocomplete-suggestion",function(){e(".autocomplete-suggestion.selected").removeClass("selected")}),s.sc.on("mouseenter",".autocomplete-suggestion",function(){e(".autocomplete-suggestion.selected").removeClass("selected"),e(this).addClass("selected")}),s.sc.on("mousedown click",".autocomplete-suggestion",function(t){var a=e(this),c=a.data("val");return(c||a.hasClass("autocomplete-suggestion"))&&(s.val(c),o.onSelect(t,c,a),s.sc.hide()),!1}),s.on("blur.autocomplete",function(){try{over_sb=e(".autocomplete-suggestions:hover").length}catch(t){over_sb=0}over_sb?s.is(":focus")||setTimeout(function(){s.focus()},20):(s.last_val=s.val(),s.sc.hide(),setTimeout(function(){s.sc.hide()},350))}),o.minChars||s.on("focus.autocomplete",function(){s.last_val="\n",s.trigger("keyup.autocomplete")}),s.on("keydown.autocomplete",function(t){if((40==t.which||38==t.which)&&s.sc.html()){var a,c=e(".autocomplete-suggestion.selected",s.sc);return c.length?(a=40==t.which?c.next(".autocomplete-suggestion"):c.prev(".autocomplete-suggestion"),a.length?(c.removeClass("selected"),s.val(a.addClass("selected").data("val"))):(c.removeClass("selected"),s.val(s.last_val),a=0)):(a=40==t.which?e(".autocomplete-suggestion",s.sc).first():e(".autocomplete-suggestion",s.sc).last(),s.val(a.addClass("selected").data("val"))),s.updateSC(0,a),!1}if(27==t.which)s.val(s.last_val).sc.hide();else if(13==t.which||9==t.which){var c=e(".autocomplete-suggestion.selected",s.sc);c.length&&s.sc.is(":visible")&&(o.onSelect(t,c.data("val"),c),setTimeout(function(){s.sc.hide()},20))}}),s.on("keyup.autocomplete",function(a){if(!~e.inArray(a.which,[13,27,35,36,37,38,39,40])){var c=s.val();if(c.length>=o.minChars){if(c!=s.last_val){if(s.last_val=c,clearTimeout(s.timer),o.cache){if(c in s.cache)return void t(s.cache[c]);for(var l=1;l<c.length-o.minChars;l++){var i=c.slice(0,c.length-l);if(i in s.cache&&!s.cache[i].length)return void t([])}}s.timer=setTimeout(function(){o.source(c,t)},o.delay)}}else s.last_val=c,s.sc.hide()}})})},e.fn.autoComplete.defaults={source:0,minChars:3,delay:150,cache:1,menuClass:"",renderItem:function(e,t){t=t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&");var o=new RegExp("("+t.split(" ").join("|")+")","gi");return'<div class="autocomplete-suggestion" data-val="'+e+'">'+e.replace(o,"<b>$1</b>")+"</div>"},onSelect:function(e,t,o){}}}(jQuery);
/*
jQuery autoComplete v1.0.7-tizra.5
Copyright (c) 2014 Simon Steinberger / Pixabay
License: http://www.opensource.org/licenses/mit-license.php
@preserve (for uglifyjs)
*/
(function($){$.fn.autoComplete=function(options){var o=$.extend({},$.fn.autoComplete.defaults,options);if(typeof options=="string"){this.each(function(){var that=$(this);if(options=="destroy"){$(window).off("resize.autocomplete",that.updateSC);that.off("blur.autocomplete focus.autocomplete keydown.autocomplete keyup.autocomplete");if(that.data("autocomplete"))that.attr("autocomplete",that.data("autocomplete"));else that.removeAttr("autocomplete");$(that.data("sc")).remove();that.removeData("sc").removeData("autocomplete")}});return this}return this.each(function(){var that=$(this);that.sc=$('<div class="autocomplete-suggestions '+o.menuClass+'"></div>');that.data("sc",that.sc).data("autocomplete",that.attr("autocomplete"));that.attr("autocomplete","off");that.cache={};that.last_val="";that.submitting=false;that.updateSC=function(resize,next){that.sc.css({top:that.offset().top+that.outerHeight(),left:that.offset().left,width:that.outerWidth()});if(!resize){that.sc.show();if(!that.sc.maxHeight)that.sc.maxHeight=parseInt(that.sc.css("max-height"));if(!that.sc.suggestionHeight)that.sc.suggestionHeight=$(".autocomplete-suggestion",that.sc).first().outerHeight();if(that.sc.suggestionHeight)if(!next)that.sc.scrollTop(0);else{var scrTop=that.sc.scrollTop(),selTop=next.offset().top-that.sc.offset().top;if(selTop+that.sc.suggestionHeight-that.sc.maxHeight>0)that.sc.scrollTop(selTop+that.sc.suggestionHeight+scrTop-that.sc.maxHeight);else if(selTop<0)that.sc.scrollTop(selTop+scrTop)}}};$(window).on("resize.autocomplete",that.updateSC);that.sc.appendTo("body");that.sc.on("mouseleave",".autocomplete-suggestion",function(){$(".autocomplete-suggestion.selected").removeClass("selected")});that.sc.on("mouseenter",".autocomplete-suggestion",function(){$(".autocomplete-suggestion.selected").removeClass("selected");$(this).addClass("selected")});that.sc.on("mousedown click",".autocomplete-suggestion",function(e){var item=$(this),v=item.attr("data-val");if(v||item.hasClass("autocomplete-suggestion")){that.val(v);o.onSelect(e,v,item);that.sc.hide()}return false});that.on("blur.autocomplete",function(){try{over_sb=$(".autocomplete-suggestions:hover").length}catch(e){over_sb=0}if(!over_sb){that.last_val=that.val();that.sc.hide();setTimeout(function(){that.sc.hide()},350)}else if(!that.is(":focus"))setTimeout(function(){that.focus()},20)});if(!o.minChars)that.on("focus.autocomplete",function(){that.last_val="\n";that.trigger("keyup.autocomplete")});function suggest(data,val){that.cache[val]=data;if(!data.length){that.sc.hide()}else if(val===that.val()&&that.is(":focus")&&!that.submitting){var s="";for(var i=0;i<data.length;i++)s+=o.renderItem(data[i],val);that.sc.html(s);that.updateSC(0)}}that.on("keydown.autocomplete",function(e){that.submitting=false;if((e.which==40||e.which==38)&&that.sc.html()){var next,sel=$(".autocomplete-suggestion.selected",that.sc);if(!sel.length){next=e.which==40?$(".autocomplete-suggestion",that.sc).first():$(".autocomplete-suggestion",that.sc).last();next.addClass("selected")}else{next=e.which==40?sel.next(".autocomplete-suggestion"):sel.prev(".autocomplete-suggestion");if(next.length){sel.removeClass("selected");next.addClass("selected")}else{sel.removeClass("selected");next=0}}if(o.liveValue){that.val(next?next.attr("data-val"):that.last_val)}that.updateSC(0,next);return false}else if(e.which==27){var sel=$(".autocomplete-suggestion.selected",that.sc);if(that.sc.is(":visible")){if(sel.length)that.val(that.last_val);that.sc.hide();return false}}else if(e.which==13||e.which==9){var sel=$(".autocomplete-suggestion.selected",that.sc),v=sel.attr("data-val");if(that.sc.is(":visible")){if(sel.length){that.val(v);o.onSelect(e,v,sel)}that.sc.hide();if(sel.length){if(e.which==13&&!o.propagateEnter)return false;if(e.which==9&&!o.propagateTab)return false}}if(e.which==13){that.submitting=true}}});that.on("keyup.autocomplete",function(e){if(!~$.inArray(e.which,[13,27,35,36,37,38,39,40])){var val=that.val();if(val.length>=o.minChars){if(val!=that.last_val){that.last_val=val;clearTimeout(that.timer);if(o.cache){if(val in that.cache){suggest(that.cache[val],val);return}for(var i=1;i<val.length-o.minChars;i++){var part=val.slice(0,val.length-i);if(part in that.cache&&!that.cache[part].length){suggest([],val);return}}}that.timer=setTimeout(function(){o.source(val,function(data){suggest(data,val)},o.delay)})}}else{that.last_val=val;that.sc.hide()}}})})};$.fn.autoComplete.defaults={source:0,minChars:3,delay:150,cache:1,liveValue:1,propagateTab:1,propagateEnter:1,menuClass:"",renderItem:function(item,search){search=search.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&");var re=new RegExp("("+search.split(" ").join("|")+")","gi");return'<div class="autocomplete-suggestion" data-val="'+item+'">'+item.replace(re,"<b>$1</b>")+"</div>"},onSelect:function(e,term,item){}}})(jQuery);

View File

@ -280,7 +280,7 @@ echo Bootstrap::formOpen(array(
},
onSelect: function(event, term, item) {
// parentsList = array( pageTitle => pageKey )
var parentKey = parentsList[term];
var parentKey = parentsList[sanitizeHTML(term)];
$("#jsparent").attr("value", parentKey);
}
});

View File

@ -256,7 +256,7 @@ echo Bootstrap::formOpen(array(
},
onSelect: function(event, term, item) {
// parentsList = array( pageTitle => pageKey )
var parentKey = parentsList[term];
var parentKey = parentsList[sanitizeHTML(term)];
$("#jsparent").attr("value", parentKey);
}
});