【发布时间】:2021-07-11 14:55:08
【问题描述】:
我想在单个多选表单输入中更改有关所选项目的各种 div 的类?
我编写的代码部分工作。当我有一个选择时,它就起作用了。一旦我在输入中选择了两个选项,它就不起作用了。
我无法修改或向 select 和 div 块代码添加参数。该代码是 WordPress 插件的一部分,添加额外参数很复杂。
这是我所做的:
jQuery(document).ready(function ($) {
$('#gd_placecategory').change(function() {
if ($(this).val() == '220') {
$("#stay_typecampingrv_row").addClass('ciDirShow');
$("#stay_categoriescamping_row").addClass('ciDirShow');
$("#stay_glampingcamping_row").addClass('ciDirShow');
} else {
$("#stay_typecampingrv_row").removeClass('ciDirShow');
$("#stay_categoriescamping_row").removeClass('ciDirShow');
$("#stay_glampingcamping_row").removeClass('ciDirShow');
}
});
$('#gd_placecategory').change(function() {
if ($(this).val() == '320') {
$("#stay_typecampingrv_row").addClass('ciDirShow');
} else {
$("#stay_typecampingrv_row").removeClass('ciDirShow');
}
});
$('#gd_placecategory').change(function() {
if (['215', '221', '22', '217', '216'].includes($(this).val())){
$("#stay_roomcomfort_row").addClass('ciDirShow');
} else {
$("#stay_roomcomfort_row").removeClass('ciDirShow');
}
});
});
#stay_roomcomfort_row,
#stay_comfortcampingrv_row,
#stay_typecampingrv_row,
#stay_categoriescamping_row,
#stay_glampingcamping_row {
display:none
}
.ciDirShow {
display:block!important
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
<select id="gd_placecategory" multiple="" field_type="multiselect">
<option title="Apartments" value="215">Apartments</option>
<option title="Campsites" value="220">Campsites</option>
<option title="Guesthouses" value="221">Guesthouses</option>
<option title="Hotels" value="22">Hotels</option>
<option title="Houses" value="217">Houses</option>
<option title="Resorts" value="216">Resorts</option>
<option title="RV Parks" value="320">RV Parks</option>
</select>
</div>
<div>Some HTML here</div>
<div id="stay_facilities_row" class="">Common content</div>
<div id="stay_roomcomfort_row" class="">Content to display when value is 215 or 221 or 22 or 217 or 216</div>
<div id="stay_comfortcampingrv_row" class="">Content to display when value is 220 or 320</div>
<div id="stay_typecampingrv_row" class="">Content to display when value is 220 or 320</div>
<div id="stay_categoriescamping_row" class="">Content to display when value is 220</div>
<div id="stay_glampingcamping_row" class="">Content to display when value is 220</div>
<div id="stay_services_row" class="">Common content</div>
任何人都可以帮助解决这个问题?非常感谢
更新了单个多选输入以便更好地理解。
【问题讨论】:
-
当您从下拉列表中选择时,所有处理程序都在运行。每一个都会覆盖其他人所做的更改。
-
如果您有一个多选,则该值是所有选定对象的数组。为什么要与字符串进行比较?
-
请添加您的 HTML 并解释每个选项应该发生什么。
-
请添加您的 HTML 并解释每个选项会发生什么。将此信息放在问题中,而不是评论中。
-
我将添加 HTML。基本上,我想这样做:如果选择项目 X 然后显示 X DIV,它是另一个项目 Y 选择显示 Y Div,如果选择 X 和 Y 然后显示 X 和 Y div。当然,如果 X 未被选中,隐藏 X div。
标签: jquery