Jquery 单击并检查是否存在时更新输入值字段

Jquery 单击并检查是否存在时更新输入值字段,jquery,input,Jquery,Input,我试图根据用户选择的选项更新输入字段的值。因此,如果他们选择“教育”选项,它会将其添加到输入值字段中。如果他们再次选择相同的选项,它将被删除。他们可以添加任意多或任意少的选项。我有点被两件事困住了: 如果它们添加了多个选项,是否可以用逗号分隔这些值 如果他们再次选择相同的选项,但又添加了其他选项,则只会删除该选项,而保留其余选项 有什么帮助吗?这就是我目前所拥有的。我已经建立了一个JSFIDLE,可能会有帮助吗?谢谢 您可以使用选定的值创建一个数组,然后使用indexOf检查该值是否已选定。您

我试图根据用户选择的选项更新输入字段的值。因此,如果他们选择“教育”选项,它会将其添加到输入值字段中。如果他们再次选择相同的选项,它将被删除。他们可以添加任意多或任意少的选项。我有点被两件事困住了:

  • 如果它们添加了多个选项,是否可以用逗号分隔这些值
  • 如果他们再次选择相同的选项,但又添加了其他选项,则只会删除该选项,而保留其余选项
  • 有什么帮助吗?这就是我目前所拥有的。我已经建立了一个JSFIDLE,可能会有帮助吗?谢谢


    您可以使用选定的值创建一个数组,然后使用
    indexOf
    检查该值是否已选定。您还可以使用
    join
    创建一个用逗号分隔的字符串。

    也许您必须从不同的角度来解决这个问题。:)

    我严重更改了你的代码。我使用一个数组来存储所选值,并使用
    .data()
    将所选值存储在输入上。使用
    .join()
    以逗号连接值。帮助在数组中查找值。因此,如果存在,我可以删除,如果不存在,我可以添加

    这是最后的代码。您必须自己实现“所有”过程的代码

    $(文档)。在('单击touchstart',上。项目库筛选容器ul li a',函数(e){
    e、 预防默认值();
    变量$this=$(this),
    $li=$this.parent(),
    $input=$li.parent().next(),
    name=$this.data('name'),
    数据=$input.data('selected')| |[],
    idx=$.inArray(名称、数据);
    如果(idx>=0){
    数据拼接(idx,1);
    }
    否则{
    数据推送(名称);
    }
    $input.data('selected',data.val(data.join(','));
    });
    
    
    给我看—
    
    对于—
    In—

    这真的很好,理解起来也很清楚。我感谢你在这件事上给我时间。我对“All”的想法是,如果选中它,它将清除所有值。我也需要想想“积极”课程是如何运作的。太好了。您可以直接使用
    $this.toggleClass('active')
    a
    元素添加/删除
    active
    类,或为
    li
    元素添加/删除
    $li.toggleClass('active')
    。如果我的答案已经回答了您的问题,请不要忘记单击屏幕旁边的复选标记。
        $(document).on('click touchstart', '.project-library-filters-container ul.project-sectors-list li a', function(e) {
            $(this).each(function() {
                $(this).parent('li').addClass('active');
                if ($(this).parent('li').is('active')) {
                    var dataName = '';
                    $('input[name=project_sectors]').val($('input[name=project_sectors]').val() + dataName).serialize();
                } else {
                    var dataName = $(this).data('name');
                    $('input[name=project_sectors]').val($('input[name=project_sectors]').val() + dataName).serialize();
                }
            });
            e.preventDefault();
        });