2012-04-11 10 views
1

Ich versuche, dies zu machen: http://jsfiddle.net/F9tMx/ arbeiten auf eine Weise, die ich dem Benutzer vorschlagen kann, der separate Vorschläge aus dem verfügbaren Tags Array eingibt.jquery Autocomplete, mehrere Werte, minLength ignoriert

Grundsätzlich möchte ich die gleiche Funktion hinzufügen, die hier auf SO vorhanden ist, wenn jemand einen Kommentar zu einer Frage hinzufügt und das '@' Zeichen eingibt (eine Liste von Benutzern erscheint, wenn die ersten Zeichen [s] übereinstimmen) jemand, der Aktivität auf der Seite gemacht hat).

Wie auch immer, ich habe gesehen, dass der Parameter minLength ignoriert wird. Während das Plugin in der Tat in der Lage ist, Wörter zu trennen und mit dem zuletzt eingegebenen Wort übereinzustimmen, sobald das letzte Wort tatsächlich leer ist (last == ''), schlägt das Plugin ALLE Elemente im availableTags Array vor, selbst wenn minLength auf gesetzt ist eine Nummer größer als 1.

gibt es eine Möglichkeit, ich könnte dies auf Ihre Meinung zu beheben?

hier ist, wie Ich mag würde es sich verhalten, aber es ist natürlich Anhebung einen Fehler http://jsfiddle.net/F9tMx/3/

+1

Hiya, du solltest einen Blick hier werfen Ich habe dies für jemanden kürzlich getan und JSfiddle ist auch da: http://StackOverflow.com/Questions/10060536/Jquery-Autocomplete-Mention/10060665#10060665, D'uh offensichtlich Sie können es für Ihre Bedürfnisse arbeiten, die es als Kommentar für Ihre Hilfe einstellen, :) haben Sie eine gute, Prost! –

+0

danke! Ich arbeite daran, ich muss in der Lage sein, mehr als einen vorgeschlagenen Gegenstand auszuwählen. In diesem Moment verliert der vorherige, sobald er einmal ausgewählt wurde, sein @ -Symbol. – sathia

+0

cool! Danke für deine Tipps. es ist jetzt fast ok. http://jsfiddle.net/F9tMx/5/ Ich vermisse nur die Tatsache, dass sobald ein paar Zeichen in der Textfläche sind, wenn Sie nur '@' drücken, schlägt es alle Elemente auf dem Array vor. Ich habe keine Ahnung, wie man das aber verhindert .. – sathia

Antwort

1

Hiya kühlen mit @ Arbeits Demo hier: http://jsfiddle.net/67dxH/

so: hier ist die Antwort, die ich antwortete und half jemand anderem: jquery autocomplete @mention

-Code Segment

diese Aussage wird in jdfiddle

.autocomplete({ 
     source: function(request, response) { 
      if (request.term.indexOf("@") >= 0) { 
       $("#loading").show(); 
       getTags(extractLast(request.term), function(data) { 
        response($.map(data.tags, function(el) { 
         return { 
          value: el.name, 
          count: el.count 
         } 
        })); 
        $("#loading").hide();      
       }); 
      } 
     }, 

Haben Sie einen schönen man den Trick if (request.term.indexOf("@") >= 0) { Rest-Code ist zu tun!

Prost!

+0

In diesem Spiel ist das falsche Verhalten immer noch da. Sobald Sie mindestens ein Tag ausgewählt haben, drücken Sie erneut die Taste @, um die gesamte Liste anzuzeigen (und wenn Sie ein neues Tag auswählen, verschwindet das vorherige). Hier ist, wie ich es behoben habe: http://jsfiddle.net/F9tMx/6/ Das einzige, was mich jetzt nervt, ist, dass es nicht für die paar Zeichen passt, die ein Benutzer einfügt, aber es stimmt auf eine sehr laxe Weise überein. Ich hätte gerne, dass es nur @user nach dem Drücken von @u anstelle aller Tags vorschlagen könnte, die den "u" -Zeichen enthalten. Ich stecke jetzt fest damit. – sathia

+1

@sathia hmm okies schau mal rein hier bruv: http://jsfiddle.net/ekzMN/8/ sollte helfen, den Code zu lesen, wo ** durch Autovervollständigung Ergebnisse Iterate ** hoffe, das hilft, :) Prost. –

+0

@sathia oder schauen Sie hier rein: Sie müssen wahrscheinlich nur einen Matcher schreiben: http: //forum.jquery.com/topic/autocomplete-max-option-und-first-letter; Ich gehe zum Abendessen wahrscheinlich in das letztere schauen, aber bitte lassen Sie mich wissen, ob dies hilft, oh und bitte akzeptieren Sie die Antwort, wenn es hilft, :) Prost! –