2 番目の質問への回答として、Tag-It リポジトリの Chris Leishman のフォークにはrequireAutocomplete
、オートコンプリート リスト内のアイテムのみをタグとして使用できるようにする新しいプロパティが含まれています。
彼のプル リクエストはこちらにあります: https://github.com/aehlke/tag-it/pull/37
このバージョンの JS ファイルをhttps://github.com/chrisleishman/tag-itからダウンロードします。
通常のプロパティのように使用します。
$(selector).tagit({
requireAutocomplete: true,
tagSource: [...]
});
あなたの最初の質問については、私は自分でこれに取り組んでいるので、解決策が見つかったら回答を更新します.
自分のローカル TagIt.js の 271 行を変更して修正しました。
var tag = that.createTag(ui.item.value);
に
var tag = that.createTag(ui.item.label);
これにより、オートコンプリート リストからオプションを選択した後、ラベルの代わりにアイテムの ID が表示されるという問題が修正されました。
アップデート
ここでは、各タグの ID を保存する方法について説明します。
私が最初にしたことは、メソッドをオーバーライドしてcreateTag
、labelName パラメーターを含めることでした (必要に応じて元のパラメーターを変更できます。私はそれをオーバーライドすることを好みました)。
$.ui.tagit.prototype.createTag = function (labelName, value, additionalClass) {
// The origional code from createTag here
}
現在の値のパラメーターがトリミングされるのと同じ方法で、labelName をトリミングします。
value = $.trim(value);
labelName = $.trim(labelName)
新しい labelName を使用するようにラベル変数を変更します。
var label = $(this.options.onTagClicked ?
'<a class="tagit-label"></a>' :
'<span class="tagit-label"></span>').text(labelName);
元のソースのオートコンプリート セクションで、createTag の呼び出しを変更して、新しいラベルを含めます。
var tag = that.createTag(ui.item.label, ui.item.value);