2015-08-10 4 views
4

Я видел этот вопрос Bootstrap tagsinput add tag with id and value, но решение не работает для меня:Bootstrap tagsinput Невозможно добавить объекты, когда параметр ItemValue не установлен

Что я вывод, что для того, чтобы получить вход в поле распознавания тегов, которые я ввожу, я либо должен иметь data-role = tagsinput ИЛИ call $ («input»). Tagsinput().

например. Это работает для распознавания тегов, без данных-роли:

$('#meeting-tags').tagsinput(); 
$('#meeting-tags').tagsinput({ 
    allowDuplicates: false, 
    itemValue: 'id', // this will be used to set id of tag 
    itemText: 'label' // this will be used to set text of tag 
}); 

Но это не делает:

$('#meeting-tags').tagsinput({ 
    allowDuplicates: false, 
    itemValue: 'id', // this will be used to set id of tag 
    itemText: 'label' // this will be used to set text of tag 
}); 

Однако, если я хочу, чтобы добавить детали через JavaScript, то он будет работать только тогда, когда я ни у роль данных или первоначальный вызов. Ошибка: нельзя добавлять объекты, если параметр itemValue не установлен

например. это работает, но теперь он не распознает тег:

$('#meeting-tags').tagsinput({ 
     allowDuplicates: false, 
     itemValue: 'id', // this will be used to set id of tag 
     itemText: 'label' // this will be used to set text of tag 
    }); 
$('#meeting-tags').tagsinput('add', { id: 'tag id', label: 'tag lable' }); 

но это не но теперь он снова распознает тег:

$('#meeting-tags').tagsinput(); 
$('#meeting-tags').tagsinput({ 
     allowDuplicates: false, 
     itemValue: 'id', // this will be used to set id of tag 
     itemText: 'label' // this will be used to set text of tag 
    }); 
$('#meeting-tags').tagsinput('add', { id: 'tag id', label: 'tag lable' }); 

Там должен быть, безусловно, способом ОБА в состоянии распознавать тег и добавлять элементы?

+0

Здравствуйте, не могли бы вы поделиться решением для этого случая, так как у меня есть точный случай, спасибо заранее. – gasser

ответ

1

инициализировать теги вход как

$('.div-tag').tagsinput({ 
     allowDuplicates: false, 
     itemValue: 'id', // this will be used to set id of tag 
     itemText: 'label' // this will be used to set text of tag 
    }); 

Чтобы добавить динамический тег

$('.div-tag').tagsinput('add', { id: 'tag id', label: 'tag lable' }); 

Это его;

-1

хорошо, поэтому я считаю, что это думаю. вы должны удалить data-role="tagsinput" при вызове

$('.div-tag').tagsinput({ 
    allowDuplicates: false, 
    itemValue: 'id', // this will be used to set id of tag 
    itemText: 'label' // this will be used to set text of tag 
}); 

Я думаю, что это создает конфликт. поэтому удалите роль данных из ввода, а затем используйте тег, как в ответе Джо.

$('.div-tag').tagsinput('add', { id: 'tag id', label: 'tag lable' }); 
+0

-1, потому что было бы более полезно, если бы вы показали, как удалить 'data-role =" tagsinput ", поскольку это решение, которое вы предлагаете. – lwdthe1

+0

Я собирался помочь. Был* –

1

Я нашел другое обходное решение.

Поиск строки «Невозможно добавить объекты, если параметр itemValue не установлен» в файл tagsinput.js. Вы найдете его внутри функции добавления плагина:

// Throw an error when trying to add an object while the itemValue option was not set 
    if (typeof item === "object" && !self.objectItems){ 
    throw("Can't add objects when itemValue option is not set"); 
    } 

Я просто заставить элемент быть от объекта к строке:

// Throw an error when trying to add an object while the itemValue option was not set 
    if (typeof item === "object" && !self.objectItems){ 
    //throw("Can't add objects when itemValue option is not set"); 
    item = $.trim(item.name); 
    } 

Это, кажется, отлично работает :). Надеюсь, эта помощь.

1

Я получал ту же проблему («itemValue not set») и проверил плагин, и кажется, что параметр «options» в конструкторе для taginput не задан, даже если вы его инициализировали.

/** 
 
    * Constructor function 
 
    */ 
 
    function TagsInput(element, options) {

То, что я сделал, это поставил случайную строку рядом с определением данных ролей в теге, как это так, чтобы заставить его иметь, что значение параметра опции:

<input type="text" id="mytags" value="" data-role="tagsinput sometext" />

затем сделал это:

var mytagsinput = $('#mytags'); 
 

 
//initialize 
 
mytagsinput.tagsinput({ 
 
       itemValue: 'id', 
 
       itemText: 'text', 
 
      }); 
 

 
//add my tags object 
 
mytagsinput.tagsinput('add', { id: 1, text: 'mytext});

И это сработало для меня. Надеюсь, это поможет

 Смежные вопросы

  • Нет связанных вопросов^_^