我正在尝试像在Github上那样使自动完成功能。
我们有一个textarea,我们在其中写一些文本。我们还输入->'@',然后尝试自动填写用户名。
当我们运行自动完成脚本时,它将删除所有文本。
我的剧本:
function getSign(text){
var indexOfAt = text.lastIndexOf('@');
return indexOfAt;
};
function changeText(event, ui) {
var selectedElement = event.target.innerText;
var text = $(this).val();
text.replace(/@$/ , selectedElement);
$(this).val(text);
}
$(document).ready(function() {
$("textarea#autocomplite").autocomplete({
source: function(request, response) {
$.ajax({
url: "/feeds/autocomplite_search",
data: {
term: request.term.substr(getSign(request.term)+1,request.term.length-getSign(request.term)).trim()
},
success: function(data){
for(i=0; i<data.length; i++){
data[i] = '@'+data[i];
}
return response(data);
}
});
},
minLength: 2,
delay: 400,
disabled: true,
search: function() {
if ( /\s$/.test($(this).val()) ) {
$(this).autocomplete('disable');
};
},
select: changeText
});
$("textarea#autocomplite").keyup(function() {
if ( /@$/.test($(this).val()) ) {
$(this).autocomplete('enable');
};
});
});
最佳答案
replace
不会修改原始的。重新分配:
text = text.replace(/@$/ , selectedElement);
关于javascript - jQuery Autocomplete不能仅替换部分输入值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13628304/