Попытка использовать плагин tagify для заполнения текстового поля динамическими метками - PullRequest
0 голосов
/ 07 сентября 2011

Имеет следующий код, который (находится в диалоговом окне) и служит слушателем событий для флажков. Я могу заполнить / удалить текстовое поле со значениями из флажка установив или сняв отдельные флажки:

// Event listener which picks individual contacts
// and populates input field.
$('#emailCheckListId_ul input:checkbox').change(function() {
      // Declare array
      var emails = [];

      // Iterate through each array and put email addresses into array
      $('#emailCheckListId_ul input:checkbox:checked').each(function() {
             emails.push($(this).val());
      });

      // Assign variable as To: text field by obtaining element's id.
      var textField = document.getElementById("root.emailTextField");

      // Add / Remove array from text field
      textField.value = emails;
});

Однако, когда я использую, попробуйте использовать плагин JQuery Tagify , он создает только одну «тегированную динамическую метку» внутри текстового поля, но не создает другую метку, когда я нажимаю на дополнительную проверку. коробка. Кроме того, когда я снимаю оригинальный флажок, он не удаляет оригинальный ярлык.

Вот мой код, использующий плагин tagify JQuery (все, что я сделал, это сохранил все то же самое, что и выше, но вызвал функцию tagify в текстовом поле):

// Add / Remove array from text field
textField.value = emails;

// Decorate with dynamic label
$(textField).tagify(emails); 

Я получаю эту ошибку JavaScript в браузере:

jquery.tagify.js: 'опции' не определены, строка 71

В исходном коде эта строка гласит:

_setOption: function( key, value ) {
    options.key = value;
},

Он указывает, что options.key не определен ...

Чтобы просмотреть полный исходный код jquery.tagify.js, нажмите здесь .

Что я, возможно, делаю неправильно? Есть ли способ, которым я могу создать «еще», например:

// Iterate through each array and put email addresses into array
$('#emailCheckListId_ul input:checkbox:checked').each(function() 
{
    // do something
}); 

// how would I define the else when the input:checkbox:checked is not checked:

// I already tried this but it doesn't work:
$('#emailCheckListId_ul input:checkbox:unchecked').each(function() 
{
    // do something else
});

Буду очень признателен, если кто-нибудь сможет мне помочь с этим ...

1 Ответ

0 голосов
/ 14 сентября 2011

Получил работу со следующим кодом:

if (emails.length <= 0) {
    // Remove dynamic labels
    $(textField).tagify('destroy');

    // Empty text field
    textField.value = "";
}
else {
    // Reset tagify
    $(textField).tagify('destroy');

    // Add / Remove array from text field
    textField.value = emails;

    // Decorate with dynamic label
    $(textField).tagify(emails);
}
...