0

我使用jQuery UI的自動完成功能在我的項目其工作正常,我的代碼是繼jQuery的UI上`Keydown`事件autocompete改變文本框的值

function split(val) { 
     return val.split(/,\s*/); 
    } 
    function extractLast(term) { 
     return split(term).pop(); 
    } 
    $(".tags").autocomplete({ 

     source: function (request, response) { 
      loc_array = request.term.split(','); 
      var term = loc_array[loc_array.length - 1]; 
      $.ajax({ 
       url: "/Admin/Tag1/LookUpCompany", 
       dataType: "json", 
       data: "q=" + term, 
       success: function (data) { 
        response($.map(data, function (item) {     
         return { 
          value: item.Name, 
          Name: item.Name 
         }; 
        })); 
       } 
      }); 
     }, 
     select: function (event, ui) { 
      event.preventDefault(); 
      var terms = split(this.value); 
      // remove the current input 
      terms.pop(); 
      // add the selected item 
      terms.push(ui.item.value); 
      // add placeholder to get the comma-and-space at the end 
      // terms.push(""); 
      this.value = terms.join(","); 
      return false; 
     }, 
     minLength: 1 
    }); 

其工作正常,但有一個問題想的時候我加載我的頁面我的文本框有價值
abc,def,ghi,

現在如果我輸入任何字符,它會給我建議的形式下拉。如果我點擊它,它會將當前值附加到單擊值,但如果我使用向下鍵從鍵盤向下移動,則它將使用當前選定值更改整個textbpx值。如何解決它?

謝謝,

+0

嘗試,而不是event.preventDefault();在select部分添加event.stopPropagation(); – pregmatch

+0

@pregmatch我已經嘗試過這一點,但它並不能幫助我:-( – Smartboy

回答

1

這是我的自動完成代碼。爲我輸入作品。

$(".tags").autocomplete({ 
     source: function(request, response) { 
      $.getJSON("/actions.php?action=autocomplete", { 
       term: extractLast(request.term) 
      }, response); 
    }, 
    search: function() { 
      /* custom minLength */ 
      var term = extractLast(this.value); 
      if (term.length < 1) { 
       return false; 
      } 
    }, 
    focus: function() { 
      /*prevent value inserted on focus */ 
      return false; 
     }, 
     select: function(event, ui) { 
      var terms = split(this.value); 
      /* remove the current input*/ 
      terms.pop(); 
      /* add the selected item*/ 
      terms.push(ui.item.value); 
      /* add placeholder to get the comma-and-space at the end*/ 
      terms.push(""); 
      this.value = terms.join(", "); 
      return false; 
     } 
    }); 

修改它以適合您的網址。我使用jQuery UI的jQuery用戶界面 - v1.8.21

+0

脫帽致敬先生!,感謝偉大的工作 – Smartboy

+0

很大,這是爲你工作! – pregmatch

相關問題