2012-02-03 3 views
1

J'ai donc parcouru internet pour trouver une solution que je pensais commune et facile, mais il semble que tous les liens que j'ai consultés sont soit plus que ce dont j'ai besoin, soit ils glissent sur les parties J'ai besoin et je veux comprendre.Comment utiliser jquery autosuggest pour rediriger vers une autre URL?

Je développe un site où j'aimerais disposer d'un champ où les utilisateurs peuvent taper un état, il va autosuggérer les états possibles et quand un utilisateur sélectionne un état, il redirigera la page vers une autre URL. Donc: s'ils sélectionnent "Alaska, AK" ils sont dirigés vers "http: //.../states/alaska"

De tout ce que j'ai cherché, le jquery UI autosuggest remote source, semble être le plus proche de J'ai besoin. J'ai aimé que je n'avais pas besoin de passer par une base de données, les valeurs sont dans le fichier "search.php".

Dans le fichier search.php les valeurs sont insérées comme:

$q = strtolower($_GET["term"]); 
if (!$q) return; 
$items = array(
"Great Bittern"=>"Botaurus stellaris", 
"Little Grebe"=>"Tachybaptus ruficollis", 
"Black-necked Grebe"=>"Podiceps nigricollis", 
"Little Bittern"=>"Ixobrychus minutus", 
... 

Je l'ai testé que je peux changer les valeurs ici pour:

$q = strtolower($_GET["term"]); 
if (!$q) return; 
$items = array(
"Alabama, AL"=>"http://.../states/alabama", 
"Alaksa, AK"=>"http://.../states/alaska", 
"Arizona, AZ"=>"http://.../states/arizona", 
... 

Dans le HTML le code est le suivant:

$(function() { 
     function log(message) { 
      $("<div/>").text(message).prependTo("#log"); 
      $("#log").scrollTop(0); 
     } 

     $("#birds").autocomplete({ 
      source: "search.php", 
      minLength: 2, 
      select: function(event, ui) { 
       log(ui.item ? 
        "Selected: " + ui.item.value + " aka " + ui.item.id : 
        "Nothing selected, input was " + this.value); 
      } 
     }); 
    }); 

Je ne ai pas besoin pour afficher un journal, comment puis-je reformater pour obtenir la page pour rediriger quand elle est sélectionnée ou lorsque l'utilisateur appuie sur le bouton Envoyer?

+0

par la façon dont il semble qu'il y ait beaucoup de dossiers connexes qui ont besoin être attaché pour que cela fonctionne, donc si quelqu'un a quelque chose de plus petit, dites-le. – lbweb

Répondre

1

Vous aurez besoin d'utiliser l'un de ces

window.location.href = "new link"; 

ou

window.location.replace("new link"); 

Peut-être comme celui-ci

select: function(event, ui) { 
       log(ui.item ? 
        window.location.href = ui.item.value : 
        "Nothing selected, input was " + this.value); 
      } 
+0

bien qui a fonctionné. Merci. Maintenant que je mets tout cela en production, je me rends compte qu'il faut 9 fichiers de liaison et 41ko pour que tout cela se fasse. Cela semble un peu extrême. Est-ce que quelqu'un a des alternatives? – lbweb

+0

Si vous avez 9 réponses différentes, vous pouvez les mettre dans la base de données, puis créer un div dans votre page où vous chargez le résultat en fonction de la sélection de l'utilisateur. Cela a besoin d'ajax cependant. – Mike

+0

Je regardais ces types de scripts. Mon problème était qu'ils tiraient tous en une seule valeur pour le texte de la suggestion et ID. Je n'avais pas besoin de l'identifiant, j'avais besoin du texte de la suggestion et du champ URL. Le problème est que je ne connais pas du tout la syntaxe MySQL/JSON/AJAX alors il était impossible de trouver comment modifier, et il n'y avait pas de documentation de niveau débutant sur les scripts. – lbweb

Questions connexes