2010-03-23 11 views
3

J'essaie d'implémenter le plugin jQuery autocomplete. Je l'ai mis en marche, mais quelque chose ne fonctionne pas correctement.Redirection des utilisateurs sur select à partir de la saisie semi-automatique?

Fondamentalement, j'ai une liste de saisie semi-automatique des employés. La liste est générée à partir d'une table dans une base de données SQL (employee_names et employee_ID), à l'aide d'un gestionnaire VB.NET (fichier .ashx). Les données sont formatées en tant que: nom_employé-ID_employé. Jusqu'ici tout va bien et tous les employés sont répertoriés dans autocomplete. Le problème est que je ne sais pas comment rediriger un utilisateur vers une certaine page (par exemple, employee_profile.aspx) quand il a sélectionné un employé à partir de la saisie semi-automatique.

Ceci est mon redirect code, mais il ne fonctionne pas comme il se doit:

$('#fname2').result(function(event, data, formatted) { 
     location.href = "employee_profile.aspx?id=" + data 
}); 

Par exemple; un utilisateur sélectionne Il redirigera un utilisateur vers employee_profile.aspx? id = nom de l'ID employé de l'employé (par exemple: employee_profile.aspx? id = John Doe-91210) au lieu de employee_profile.aspx? id = 91210.

Je sais que je peux enlever la employee_id avec:

formatResult: function(data, value) { 
    return value.split("-")[1]; 
    } 
}); 

Mais je ne sais pas comment passer que employee_id à la redirection page ..

Voici mon code tout:

$().ready(function() { 

     $("#fname2").autocomplete("AutocompleteData.ashx", { 
      minChars: 3, 
      selectFirst: false, 
      formatItem: function(data, i, n, value) { 
      return value.split("-")[0]; 
      }, 
      //Not used, just for splitting employee_ID 
      //formatResult: function(data, value) { 
      // return value.split("-")[1]; 
      //} 
      }); 

      $('#fname2').result(function(event, data, formatted) { 
      location.href = "employee_profile.aspx?id=" + data 
      }); 

    }); 

Je sais que je suis très proche et cela devrait être quelque chose de très simple, mais quelqu'un peut-il m'aider?

EDIT

Cette résolu le problème pour moi: formatted.split au lieu de data.split. code:

$('#fname3').result(function(event, data, formatted) { 
      var employeeId = formatted.split("-")[1]; 
      location.href = "employee_profile.aspx?id=" + employeeId 
}); 

Répondre

5

Voulez-vous dire qu'il réoriente avec succès, mais plutôt que d'aller ...

employee_profile.aspx id = 91210

Il va ...

?

employee_profile.aspx? Id = John Doe-91210 ??

Si tel est le cas ... alors vous pouvez simplement effectuer votre striping dans votre fonction de résultat ...

$('#fname2').result(function(event, data, formatted) { 
     var employeeId = data.split("-")[1]; 
     location.href = "employee_profile.aspx?id=" + employeeId 
}); 
+0

Eh oui, ils sont redirigés, mais bien à employee_profile.aspx? id = John Doe-91210. Votre suggestion est tout à fait logique, mais cela ne fonctionne pas: ils ne seront pas redirigés vers employee_profile.aspx. $(). Ready (function() { $ ("# nom"). Saisie semi-automatique ("AutocompleteData2.ashx », { minChars: 3, SelectFirst: faux }); $ (. '# de FNAME) résultat (function (event, données, mise en forme) {var employeeId = data.split ("-") [1]; window.location.href = "employee_profile.aspx id =?" + employeeId }); }); Mais nous nous rapprochons .. –

+0

Alors où est-il rediriger maintenant? –

+0

J'ai dû utiliser formatted.split au lieu de data.split. –

0

Je pense que location.href devrait être window.location

+0

L'objet window est la portée globale, donc l'emplacement fait référence à window.location sauf s'il y a une variable locale nommée location. – jholster