2010-11-04 182 views
1

我想修改輸入鍵以啓動一個window.open(ui.item.url)jquery ui自動完成 - 重點事件

有人可以幫我做到這一點嗎?自動完成密鑰代碼塊位於:

.bind("keydown.autocomplete", function(event) { 
if (self.options.disabled) { 
    return; 
} 

var keyCode = $.ui.keyCode; 
switch(event.keyCode) { 
case keyCode.PAGE_UP: 
    self._move("previousPage", event); 
    break; 
case keyCode.PAGE_DOWN: 
    self._move("nextPage", event); 
    break; 
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; 
case keyCode.ENTER: 
case keyCode.NUMPAD_ENTER: 
    // when menu is open or has focus 
    if (self.menu.element.is(":visible")) { 
     event.preventDefault(); 
    } 
    //passthrough - ENTER and TAB both select the current element 
case keyCode.TAB: 
    if (!self.menu.active) { 
     return; 
    } 
    self.menu.select(event); 
    break; 
case keyCode.ESCAPE: 
    self.element.val(self.term); 
    self.close(event); 
    break; 
default: 
    // keypress is triggered before the input value is changed 
    clearTimeout(self.searching); 
    self.searching = setTimeout(function() { 
     // only search if the value has changed 
     if (self.term != self.element.val()) { 
      self.selectedItem = null; 
      self.search(null, event); 
     } 
    }, self.options.delay); 
    break; 
} 
}) 

回答

1

我添加了一個if塊的成功方法,這樣,如果按鍵== 13我剛打開一個新窗口的URL,並返回

0

我假設您遇到彈出式窗口攔截器的問題。

如果是這樣的話,那麼你應該知道瀏覽器會阻止沒有被用戶交互直接觸發的彈出窗口。通常這意味着需要鼠標點擊,但我不完全確定輸入鍵觸發器是否會被阻止。您可能想打開窗口,然後在窗口加載後更改窗口的位置。

var newWin = window.open(null, 'name'); 
newWin.onload = function(e) 
{ 
    newWind.location = url; 
}

您可能需要爲IE設置一個onReadyStateChange事件而不是onload事件。

jQuery在不同窗口的上下文中工作時有一些問題,所以一定要檢查你使用的窗口引用,否則你的全局變量可能會消失。

+0

回車鍵的當前行爲是將值放入輸入框。我想修改行爲,而不是預形成一個window.open(ui.item.url)我沒有提到任何有關彈出式鎖,但謝謝。 – specked 2010-11-05 12:40:03