我有一個應用了jQuery ui自動完成插件的jQuery textarea。我注意到,即使未顯示自動填充建議,使用箭頭上下移動也不起作用。只有正確和左側。jQuery自動完成禁用textarea中的向上/向下箭頭。爲什麼?
任何想法爲什麼以及如何解決?這是一個選項嗎?當自動填充選項打開時,我明白上下是被禁用的,但是如果他們不打開爲什麼禁用?
由於
我有一個應用了jQuery ui自動完成插件的jQuery textarea。我注意到,即使未顯示自動填充建議,使用箭頭上下移動也不起作用。只有正確和左側。jQuery自動完成禁用textarea中的向上/向下箭頭。爲什麼?
任何想法爲什麼以及如何解決?這是一個選項嗎?當自動填充選項打開時,我明白上下是被禁用的,但是如果他們不打開爲什麼禁用?
由於
的自動填充實施結合該插件被施加到元件本身上的「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;
我能夠使用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;
這應該可能被摺疊成真正的版本,但我確定如何去做到這一點。
看起來這將是固定在即將到來的1.9版本:
http://bugs.jqueryui.com/ticket/7639
您可以編輯當前的發行版本,或嘗試不完整的1.9:
https://github.com/jquery/jquery-ui
一1.9的好處是autocomplete現在支持contenteditable divs。
不錯的解決方案。我想知道他們是否已經在UI 1.9中解決了這個問題。 – Hawkee