2012-11-29 22 views
3

我正在嘗試使Github上的自動完成。 我們有一個textarea,我們在裏面寫一些文字。我們還將 - >'@'並嘗試自動填寫用戶名。jQuery自動完成不能替代部分輸入值

當我們運行自動完成腳本時,它將刪除所有文本。

我的腳本:

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'); 
    }; 
    }); 

}); 

回答

1

replace不會修改原始。重新分配:

text = text.replace(/@$/ , selectedElement);