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