2010-10-06 5 views
1

J'essaie d'implémenter la méthode de saisie semi-automatique pour les zones de texte.Comment puis-je transmettre des valeurs à un tableau javascript?

Je voudrais utiliser l'exemple basé sur jquerys autocomplete fourni here

<head> 
    <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script> 
    <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script> 

    <script> 
    $(document).ready(function() { 
    $("input#autocomplete").autocomplete({ 
    source: ["c++", "java", "php", "coldfusion", "javascript", "asp", "ruby"] 
}); 
    }); 
    </script> 
</head> 

Le premier et le principal problème est que je ne sais pas la façon de passer mes valeurs au source:

En disant que je veux dire, en supposant que j'ai aa côté serveur fonction ASP.NET GetTheResults comme ListOf (string) ou GetTheResults comme string()

comment est-am Upposé de transmettre ces valeurs comme source requise par l'auto-complétion?

Le deuxième problème est que la façon spécifique n'utilise pas AJAX. Ce qui signifie que je devine sur la charge du formulaire, je vais charger toutes les valeurs disponibles à la source. N'est-ce pas une exagération?

Que suggérez-vous plutôt?

Merci pour votre intérêt!

+0

Considérons http://view.jquery.com/trunk/plugins/autocomplete/demo/ qui autorise les valeurs chargées AJAX. – Gazler

Répondre

0

Oh, peut-être que j'ai mal compris - est GetTheResults une fonction ASP.NET côté serveur? Tu n'as pas dit. Cela suppose qu'il s'agit d'une fonction JavaScript côté client. Si c'est côté serveur, pourquoi ne pas implémenter la méthode AJAX?


Si GetTheResults Rétablit toutes les valeurs alors je pense que vous pouvez simplement le remplir en ligne, à savoir

$("input#autocomplete").autocomplete({ 
    source: GetTheResults() 
    } 
}); 

Le contrôle filtre ensuite la liste pour l'affichage. Ou vous pouvez utiliser le mécanisme de source de fonction comme documenté sur cette page, par ex.

$("input#autocomplete").autocomplete({ 
    source: function(request, response) { 
     var results = GetTheResultsForInput(request.term); 
     response(results); 
    } 
}); 
+0

Yeap! GetTheResults est une fonction ASP côté serveur. Désolé de ne pas le mentionner. – OrElse

0

Vous pouvez à la place écrire manuellement le contenu du serveur sur le client. Essayez de créer une méthode publique appelée:

public string GetJs() 
{ 
    var data = this.GetTheResults(); 
    string output = "["; 
    bool comma = false; 

    foreach (var i in data) 
    { 
     if (comma) 
     output += ", "; 
     else 
     comma = true; 

     output += '" + i + "'"; 
    } 

    return output + "]"; 
} 

Et changer votre script côté client pour ressembler à:

$(document).ready(function() { 
    $("input#autocomplete").autocomplete({ 
    source: <%= GetJs() %> 
}); 
    }); 

Vous pourriez avoir à injecter <% =%> sous forme de chaîne, et au lieu faire :

source: eval("<%= GetJs() %>") 

Ou vous pouvez écrire ce JS entier de la page à la sortie.

HTH.