proper fix for #1758; keep caret position after using autocomplete

This commit is contained in:
Toks 2013-06-24 10:30:14 -04:00
parent f4706aa3be
commit c8d070e602

View File

@ -51,17 +51,26 @@
return false;
},
select: function(event, ui) {
this.value = this.value.replace(/\S+\s*$/g, ui.item.value + " ");
var before_caret_text = this.value.substring(0, this.selectionStart);
var after_caret_text = this.value.substring(this.selectionStart);
this.value = before_caret_text.replace(/\S+\s*$/g, ui.item.value + " ");
// Preserve original caret position to prevent it from jumping to the end
var original_start = this.selectionStart;
this.value += after_caret_text;
this.selectionStart = this.selectionEnd = original_start;
return false;
},
source: function(req, resp) {
var pre_caret_text = req.term.substring(0, this.element.get(0).selectionStart);
var before_caret_text = req.term.substring(0, this.element.get(0).selectionStart);
if (pre_caret_text.match(/ $/)) {
if (before_caret_text.match(/ $/)) {
return;
}
var term = pre_caret_text.match(/\S+/g).pop();
var term = before_caret_text.match(/\S+/g).pop();
$.ajax({
url: "/tags.json",
data: {