2010-04-07 6 views
0

J'ai la situation suivante avec un plugin autocomplete sur une page .aspx. Cela fonctionne bien. Le résultat de la recherche par saisie semi-automatique donne un identifiant de produit et une description de produit est concaténée avec celui-ci (c'est-à-dire 2099 - Un produit). Je sais que je dois utiliser split() avec ça mais où dois-je le mettre? Je suis encore assez nouveau pour jQuery et javascript.jQuery autocomplete: comment diviser le résultat de la chaîne?

$(document).ready(function() { 
    $('.divAutoComplete').autocomplete("LookupCodes.aspx?type=FC", { 
    mustMatch: true 
    }); 
}); 

Répondre

1

Si c'est le même autocomplete I've used (par Tomas Kirda), vous devriez être en mesure d'ajouter un événement onSelected comme ceci:

$(document).ready(function() { 
    $('.divAutoComplete').autocomplete("LookupCodes.aspx?type=FC", { 
    mustMatch: true, 
    onSelect: function(value, data) { autoCompleteSelected(value, data); } 
    }); 
}); 

function autoCompleteSelected(value, data) { 
    var parts = data.split("--"); 
... do something with parts 

} 

De toute évidence, si ce n'est pas alors il aura différents événements

+0

Je vais l'essayer. Le mien vient de "bassitance de" mais il me semble que je me souviens d'un onSelect. Je vais marquer votre réponse après que je suis sûr que cela fonctionne. Merci! – Matt

+0

Voici mon plugin: http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/ – Matt

0

en JavaScript, toute chaîne peut être divisé en utilisant la fonction split comme ceci:

"Pandas enjoy tasty bamboo".split(' ') 

Les divisions au-dessus du string sur les espaces qui reviennent le tableau suivant:

["Pandas", "enjoy", "tasty", "bamboo"] 

Toute chaîne peuvent être envoyés à la fonction split et il va faire face à des chaînes multi-caractères très bien.

Maintenant, pour ce qui est de votre question avec le plugin jQuery autocomplete, vous aurez besoin que votre page .aspx renvoie un tableau d'options JS pour que cela fonctionne. Vous pouvez également charger les données d'une autre manière, puis passer un tableau à la saisie semi-automatique. Si le serveur retourne un tableau comme ce qui suit, vous pouvez passer directement:

["1234 -- Chicken", "4321 -- Noodle", "1432 -- Irrational Monkeys"] 

Le point est que autocomplete utilise un tableau pour la correspondance. Les docs for the autocomplete plugin semblent assez décents.

+0

merci. Je sais comment diviser la chaîne. Je ne sais pas comment le faire dans le contexte du plugin autocomplete. – Matt

0

faire ce code pour diviser

<script type="text/javascript"> 
    $(function() { 
     var availableTags = ["c++", "java", "php", "coldfusion", "javascript", "asp", "ruby", "python", "c", "scala", "groovy", "haskell", "perl"]; 
     function split(val) { 
      return val.split(/,\s*/); 
     } 
     function extractLast(term) { 
      return split(term).pop(); 
     } 

     $("#tags").autocomplete({ 
      minLength: 0, 
      source: function(request, response) { 
       // delegate back to autocomplete, but extract the last term 
       response($.ui.autocomplete.filter(availableTags, extractLast(request.term))); 
      }, 
      focus: function() { 
       // prevent value inserted on focus 
       return false; 
      }, 
      select: function(event, ui) { 
       var terms = split(this.value); 
       // remove the current input 
       terms.pop(); 
       // add the selected item 
       terms.push(ui.item.value); 
       // add placeholder to get the comma-and-space at the end 
       terms.push(""); 
       this.value = terms.join(", "); 
       return false; 
      } 
     }); 
    }); 
    </script> 
Questions connexes