proper fix for #1758; keep caret position after using autocomplete
This commit is contained in:
@@ -51,17 +51,26 @@
|
|||||||
return false;
|
return false;
|
||||||
},
|
},
|
||||||
select: function(event, ui) {
|
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;
|
return false;
|
||||||
},
|
},
|
||||||
source: function(req, resp) {
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var term = pre_caret_text.match(/\S+/g).pop();
|
var term = before_caret_text.match(/\S+/g).pop();
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: "/tags.json",
|
url: "/tags.json",
|
||||||
data: {
|
data: {
|
||||||
|
|||||||
Reference in New Issue
Block a user