1

タグを入力するために使用するjQuery.autocompleteを実装しようとしています(SOのように)。ただし、既にリストにあるタグは表示したくありません。すでに追加している場合はfoo、提案として表示したくありません。タグのリストはサーバーから取得されます。ただし、ui.contentオブジェクトの変更にはいくつかの問題があります。

ここにある応答方法を使用します。

response: (event, ui)->
  # Fetch already added tags
  current = $('input#photo_tag_list').val().split(',')
  # Filter out already added tags from result
  ui.content = ui.content.filter (el) -> $.inArray(el.label, current) == -1

ただし、上記は機能しません。それでもすべてのタグが表示されます。ui.content を調べると、正しいように見えることがわかります...上記の非同期か何かですか?!

奇妙なことは、私がそうする場合:

ui.content.push({label: "Foo", value:"Bar"})

Fooオートコンプリート リストに表示されます。しかし、私がこれを行うと:

ui.content = []

それはまだ返されたすべてを示しています。空のリストが必要です。

これはなぜでしょうか?結果リストを正しく変更するにはどうすればよいですか?

更新 Andrew Whitaker のソリューションに基づいて動作するようになりました。

4

2 に答える 2