我正在尝试像在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/

10-10 11:54