2011-11-01 30 views
2

我有一個應用了jQuery ui自動完成插件的jQuery textarea。我注意到,即使未顯示自動填充建議,使用箭頭上下移動也不起作用。只有正確和左側。jQuery自動完成禁用textarea中的向上/向下箭頭。爲什麼?

任何想法爲什麼以及如何解決?這是一個選項嗎?當自動填充選項打開時,我明白上下是被禁用的,但是如果他們不打開爲什麼禁用?

由於

回答

0

的自動填充實施結合該插件被施加到元件本身上的「KEYDOWN」事件,並且它防止默認行爲。

我猜這個插件打算用在文本字段上,而不是textarea。

this.element 
    ... 
    .bind("keydown.autocomplete", function(event) { 
     if (self.options.disabled || self.element.propAttr("readOnly")) { 
      return; 
     } 

     suppressKeyPress = false; 
     var keyCode = $.ui.keyCode; 
     switch(event.keyCode) { 
      ... 
      case keyCode.UP: 
       self._move("previous", event); 
       // prevent moving cursor to beginning of text field in some browsers 
       event.preventDefault(); 
       break; 
      case keyCode.DOWN: 
       self._move("next", event); 
       // prevent moving cursor to end of text field in some browsers 
       event.preventDefault(); 
       break; 
1

我能夠使用ISOPEN布爾追蹤自動完成組件的狀態,以解決此問題的自動完成功能的unminified版本。

這在文件的頂部:

(function($, undefined) { 

var requestIndex = 0; 
var isOpen = false; // NEW 

然後在_suggest函數的頂部:

isOpen = true; // NEW 

然後在接近函數的頂部:

isOpen = false; // NEW 

然後在鍵綁定功能中:

case keyCode.UP: 
self._move("previous", event); 
if (isOpen)     // NEW 
    event.preventDefault(); // NEW 
break; 
case keyCode.DOWN: 
self._move("next", event); 
if (isOpen)     // NEW 
    event.preventDefault(); // NEW 
break; 

這應該可能被摺疊成真正的版本,但我確定如何去做到這一點。

+0

不錯的解決方案。我想知道他們是否已經在UI 1.9中解決了這個問題。 – Hawkee

相關問題