5

デフォルトの Bootstrap-TagsInput confirmKeys、つまりenter=13またはcomma=をすぐに使用することができません188。これは、Typeahead.jsの有無にかかわらず当てはまります。キーを確認すると、そのキーをクリックしてタグを作成できます。

タグが文字列なのかオブジェクトなのかが問題だと思います。Tagsinput デモを見ると、「Typeahead」の例では、デフォルトconfirmKeysの 、enterまたはでタグを作成できますcommaが、そのすぐ下の「タグとしてのオブジェクト」の例ではできません。

confirmKeysオブジェクトタグを使用する方法はありますか?

4

3 に答える 3

3

これを機能させるには、Bootstrap-tagsinput ライブラリを編集する必要がありました。

ライブラリに追加/コメントアウトしたものは次のとおりです。

 //self.options.freeInput = false; //notice commented out

//... (lots of lines between)

if (self.options.freeInput && (keyCombinationInList(event, self.options.confirmKeys) || maxLengthReached)) {
    // Only attempt to add a tag if there is data in the field

    if (text.length !== 0) {
       //<<<<< BEGIN code block added
       //self.add(maxLengthReached ? text.substr(0, self.options.maxChars) : text); //notice commented out

       var item2 = self.$input.val();
       if (self.objectItems) {
         var beforeFreeInputItemAdd = $.Event('beforeFreeInputItemAdd', { item: item2, cancel: true });
         self.$element.trigger(beforeFreeInputItemAdd);
         if (beforeFreeInputItemAdd.cancel)
           return;

         item2 = beforeFreeInputItemAdd.item;
       }

       self.add(item2);
       self.$input.val(''); 
       //  $input.val(''); //>>>>>> END code block added
    }

}

そして、このライブラリの変更を利用したいコードベースのどこにでも、これを追加しました:

var id_increment = 1;
$("#my-tagsinput-field").on('beforeFreeInputItemAdd', function(event) {

    event.item = {'name': event.item, 'id': 'new-'+id_increment};
    event.cancel = false;
    id_increment++;

});
于 2015-12-27T19:27:32.010 に答える