установите флажок несколько и добавьте его значение

0

Здесь сценарий, у меня есть динамическая кнопка выпадающего меню, каждый раз, когда пользователь выбирает ее, будет просматривать список имен с помощью флажка в div;

Изображение 174551

если флажок установлен, значение (ids) будет добавлено в текстовое поле ниже; если он не установлен, он удалит значение.

Изображение 174551:

Проблема заключается в том, что каждый раз, когда я выбираю в раскрывающемся списке и проверяю элемент, весь текст в текстовом поле удаляется. Здесь моя функция:

(function($) {
    jQuery.fn.multiselect = function() {
        $(this).each(function() {

            var checkboxes = $(this).find("input:checkbox");
            var selectAll  = $(this).find("input[class='checkAll']");

            selectAll.off('click').on('click', function() {
                $(this).closest('div').find(':checkbox').prop('checked', this.checked );
                $(this).closest('div').find(':checkbox').parent().toggleClass("multiselect-on", this.checked);
            });

            checkboxes.each(function() {
                var checkbox = $(this);

                checkboxes.on('change', function() {
                   $(this).parent().toggleClass("multiselect-on", this.checked);
                   var string = checkboxes.filter(":checked").map(function(){
                      return this.value;
                   }).get().join(",");

                   $('#empid').val(string);

                });
            });
        });
    };
    })(jQuery);

--thanks для @undefined минимизации функции;)

Функция [ОБНОВЛЕНО]

Функция теперь работает соответственно с выбором всей опции. но идея должна быть; если один из элементов не отмечен, необходимо выбрать флажок "Выбрать все"!

нашел ту же идею в плагинах Multiple Select, которые я хочу включить в функции

Пожалуйста, помогите просветить меня снова! ; (

  • 0
    Пожалуйста, предоставьте весь код в контексте вопроса, как вы устанавливаете раскрывающийся список, слушателей и т. Д.
  • 0
    почему вы написали checkbox.click отдельно, если вы можете написать ту же логику в checkboxes.on ('click' ....?
Показать ещё 10 комментариев
Теги:
select
drop-down-menu

1 ответ

1

Предполагая, что #chekeditem выбирает целевой элемент (textarea), вы должны просто использовать метод val вместо text. Для установки/получения значений формы используется метод val.

Обратите внимание, что вы прикрепляете несколько обработчиков кликов к элементам в each цикле:

checkboxes.each(function() {
    ...
    // Add selected checkbox in textarea
    checkboxes.on('click' ...

И jQuery on методу итерации через коллекцию внутренне, вам не нужно использовать цикл на первом месте.

Вы также можете Минимизировать код, нет необходимости использовать несколько click (лучше слушать change событие) обработчик:

checkboxes.on('change', function() {
   $(this).parent().toggleClass("multiselect-on", this.checked);

   var string = checkboxes.filter(":checked").map(function(){
      return this.value;
   }).get().join(",");

   $('#chekeditem').val(string);
});

Если обработчик должен быть вызван сразу после привязки события, вы можете инициировать событие с помощью метода change(), trigger('eventName') или triggerHandler().

checkboxes.on('change', function() {}).change();
  • 0
    спасибо за указание на это. checkboxes.on ('click' .. используется для выделения флажка
  • 0
    спасибо @ не определено! Теперь проблема в том, как сохранить значение в текстовой области
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню