2010-11-04 6 views
1

Je voudrais modifier la touche Entrée pour déclencher une window.open(ui.item.url)jquery ui autocomplete - événements clés

Quelqu'un pourrait-il me aider à le faire? Le bloc de code clé de saisie semi-automatique est ici:

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

Répondre

1

J'ai ajouté si le bloc à la méthode de succès de sorte que si la pression de touche == 13 Je viens d'ouvrir une nouvelle fenêtre avec l'URL et le retour

0

Je suppose que vous rencontrez des problèmes avec les popup-blockers.

Si c'est le cas, sachez que les navigateurs bloqueront les fenêtres qui n'ont pas été déclenchées directement par une interaction utilisateur. Habituellement, cela signifie qu'un clic de souris est nécessaire, bien que je ne sois pas entièrement certain si un déclencheur de clé d'entrée sera bloqué. Vous souhaiterez peut-être ouvrir la fenêtre, puis modifier l'emplacement de la fenêtre après le chargement de la fenêtre.

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

vous devrez peut-être mettre en place un événement onReadyStateChange pour IE au lieu de l'événement onload. JQuery a quelques problèmes lorsque vous travaillez dans le contexte d'une fenêtre différente, alors assurez-vous de vérifier quelle référence de fenêtre vous utilisez, sinon vos variables globales pourraient disparaître.

+0

Le comportement actuel de la touche entrée est de placer la valeur dans l'entrée boîte. Je veux modifier le comportement pour à la place préformer un window.open (ui.item.url) Je n'ai pas mentionné quoi que ce soit à propos des verrous popup mais merci. – specked