2011-01-17 8 views
1

Hey Jungs, Ich habe diese seltsame Situation, wo ich Elemente laden über die jquery load() -Methode, wenn Sie in einem Eingabefeld tippen. Bei jedem Tastendruck starte ich eine doSearch() - Funktion, die eine bestimmte Seite lädt. Ich möchte nicht, dass diese doSearch() -Funktion ausgelöst wird, wenn die Pfeiltasten gedrückt werden, aber ich brauche die Pfeiltasten, um durch die geladenen Elemente zu navigieren.jquery: laden Ajax Anfrage auf keyup - keine Pfeiltasten?

Dies ist die Struktur meines Codes jetzt. Wie Sie in der Funktion doSearch() sehen können, teste ich mit den Pfeiltasten UP oder DOWN. Wenn einer davon gedrückt wird, wird die Methode load() nicht ausgelöst. Wenn jedoch eine andere Taste gedrückt wird und die Lade-Methode ein Ergebnis zurückgibt, brauche ich die Pfeiltasten AUF und AB, um durch die geladenen Ergebnisse zu navigieren.

var searchTimer = 0; 

$('.searchbox').keyup(function(e) { 

    switch (e.keyCode) { 
     //case 13: // Enter 
     //case 38: // Up 
     //case 40: // Down 
     break; 

     default: 
     if (searchTimer != 0) { 
      clearTimeout(searchTimer); 
     } 

     searchTimer = setTimeout(function() { 
      doSearch(e.keyCode); 
     }, 250); 
    } 

}); 

function doSearch(keyCode) { 

    if ($('.searchbox').val() != '') { 

     if (keyCode != 38 && keyCode != 40) { 

      searchTimer = 0; 

      $('#searchresults').load('/sitemap/' + ' #inner', function() { 

       //modify loaded elements 

       //key navigation through elements with UP and DOWN arrow keys 

      }); 

     } 
    } 
} 

Irgendeine Idee, wie man das löst? Vielen Dank für Ihre Hilfe.

Grüße matt

Antwort

1

Was ist, wenn Sie "preventDefaut()" verwenden?

switch (e.keyCode) { 
    case 13: // Enter 
    case 38: e.preventDefault() // Up 
    case 40: e.preventDefault()// Down 
    break; 

Ich denke, das wird Ihr Problem lösen.

+0

nein, tut es nicht! Ich denke du hast eine falsche Vorstellung von meinem Problem! Ich muss einen Weg finden, die load-Methode nicht mit den Auf- und Ab-Pfeilen auszulösen, sondern sie verwenden zu können, wenn die load-Methode etwas zurückgibt. – matt