根据选择下拉列表显示或隐藏多个字段 - jquery
Displaying or hiding multiple fields based on selection dropdown - jquery
我有一个包含下拉列表的表单。根据下拉列表中的 selection,应显示或隐藏多个字段。
我编写的 jquery 函数仅适用于一个字段。如果我 select 没有在下拉列表中只有隐藏的标题,其余的保留。
我不太明白为什么。
我可以通过给每个字段 id 另一个名称(例如 showing1、showing2、...)并在函数中引用这个 id 来解决这个问题,但这是很多重复。
难道没有更好的方法吗?
Link 到 fiddle.
感谢您的输入。
## jQuery
$(document).ready(function(){
$('#showing').hide();
$('#condition').change(
function(){
if(this.value == "yes"){
$('#showing').show();
}
else {
$('#showing').hide();
}
}
)
});
### Part of the form
<div class="col-4">
<div class="d-flex">
<div class="flex-fill p-2">
<select name="playing" class="form-control" id="condition" required>
<option value="yes">Yes</option>
<option value="no">No</option>
</select>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-2">
<div class="d-flex">
<div class="p-1">
<label class="p-2" for="what" id="showing" >What</label>
</div>
</div>
</div>
<div class="col-4">
<div class="d-flex">
<div class="flex-fill p-2">
<input id="showing"
type="text"
class="form-control input-text"
name="wat"
>
</div>
</div>
</div>
<div class="col-2">
<div class="d-flex">
<div class="p-1">
<label class="p-2" for="type" id="showing" >Type</label>
</div>
</div>
</div>
<div class="col-4">
<div class="d-flex">
**请检查 HTML 定义输入 ID 的规则和 class **
Element IDs should be unique within the entire document.
<div>
<img src="https://playcode.io/static/img/logo.png"
alt="PlayCode logo">
<h1 id="msg"></h1>
<div class="col-4">
<div class="d-flex">
<div class="flex-fill p-2">
<select name="playing" class="form-control" id="condition" required>
<option value="yes">Yes</option>
<option value="no">No</option>
</select>
</div>
</div>
</div>
</div>
<div class="row">
<div class="what_hide">
<div class="col-2">
<div class="d-flex">
<div class="p-1">
<label class="p-2" for="what" id="showing" >What</label>
</div>
</div>
</div>
<div class="col-4">
<div class="d-flex">
<div class="flex-fill p-2">
<input id="wat"
type="text"
class="form-control input-text"
name="wat"
>
</div>
</div>
</div>
</div>
<div class="col-2">
<div class="d-flex">
<div class="p-1">
<label class="p-2" for="type" >Type</label>
</div>
</div>
</div>
<div class="col-4">
<div class="d-flex">
<div class="flex-fill p-2">
<input id="new"
type="text"
class="form-control input-text"
name="type"
>
</div>
</div>
</div>
</div>
JS
$(document).ready(function(){
$('.what_hide').hide();
$('#condition').change(
function(){
if(this.value == "yes"){
$('.what_hide').show();
}
else {
$('.what_hide').hide();
}
}
)
});
首先,您应该从元素中删除 id "showing" 并添加一个 class 名称 "showing" 或者您可以将此 class 添加到所有这些元素的父元素.其次,你应该在 jquery 中将你的 id 更改为 class。而且我认为您没有添加加载 jquery.
的脚本
编辑后的代码:
$(document).ready(function(){
$('.showing').hide();
$('#condition').change(
function(){
if(this.value == "yes"){
$('.showing').show();
}
else {
$('.showing').hide();
}
}
)
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="col-4">
<div class="d-flex">
<div class="flex-fill p-2">
<select name="playing" class="form-control" id="condition" required>
<option value="no">No</option>
<option value="yes">Yes</option>
</select>
</div>
</div>
</div>
<div class="row">
<div class="col-2">
<div class="d-flex">
<div class="p-1">
<label class="p-2 showing" for="what">What</label>
</div>
</div>
</div>
<div class="col-4">
<div class="d-flex">
<div class="flex-fill p-2">
<input
type="text"
class="form-control input-text showing"
name="wat"
>
</div>
</div>
</div>
<div class="col-2">
<div class="d-flex">
<div class="p-1">
<label class="p-2 showing" for="type">Type</label>
</div>
</div>
</div>
<div class="col-4">
<div class="d-flex">
<div class="flex-fill p-2">
<input
type="text"
class="form-control input-text showing"
name="type"
>
</div>
</div>
</div>
</div>
我有一个包含下拉列表的表单。根据下拉列表中的 selection,应显示或隐藏多个字段。 我编写的 jquery 函数仅适用于一个字段。如果我 select 没有在下拉列表中只有隐藏的标题,其余的保留。 我不太明白为什么。 我可以通过给每个字段 id 另一个名称(例如 showing1、showing2、...)并在函数中引用这个 id 来解决这个问题,但这是很多重复。
难道没有更好的方法吗?
Link 到 fiddle.
感谢您的输入。
## jQuery
$(document).ready(function(){
$('#showing').hide();
$('#condition').change(
function(){
if(this.value == "yes"){
$('#showing').show();
}
else {
$('#showing').hide();
}
}
)
});
### Part of the form
<div class="col-4">
<div class="d-flex">
<div class="flex-fill p-2">
<select name="playing" class="form-control" id="condition" required>
<option value="yes">Yes</option>
<option value="no">No</option>
</select>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-2">
<div class="d-flex">
<div class="p-1">
<label class="p-2" for="what" id="showing" >What</label>
</div>
</div>
</div>
<div class="col-4">
<div class="d-flex">
<div class="flex-fill p-2">
<input id="showing"
type="text"
class="form-control input-text"
name="wat"
>
</div>
</div>
</div>
<div class="col-2">
<div class="d-flex">
<div class="p-1">
<label class="p-2" for="type" id="showing" >Type</label>
</div>
</div>
</div>
<div class="col-4">
<div class="d-flex">
**请检查 HTML 定义输入 ID 的规则和 class **
Element IDs should be unique within the entire document.
<div>
<img src="https://playcode.io/static/img/logo.png"
alt="PlayCode logo">
<h1 id="msg"></h1>
<div class="col-4">
<div class="d-flex">
<div class="flex-fill p-2">
<select name="playing" class="form-control" id="condition" required>
<option value="yes">Yes</option>
<option value="no">No</option>
</select>
</div>
</div>
</div>
</div>
<div class="row">
<div class="what_hide">
<div class="col-2">
<div class="d-flex">
<div class="p-1">
<label class="p-2" for="what" id="showing" >What</label>
</div>
</div>
</div>
<div class="col-4">
<div class="d-flex">
<div class="flex-fill p-2">
<input id="wat"
type="text"
class="form-control input-text"
name="wat"
>
</div>
</div>
</div>
</div>
<div class="col-2">
<div class="d-flex">
<div class="p-1">
<label class="p-2" for="type" >Type</label>
</div>
</div>
</div>
<div class="col-4">
<div class="d-flex">
<div class="flex-fill p-2">
<input id="new"
type="text"
class="form-control input-text"
name="type"
>
</div>
</div>
</div>
</div>
JS
$(document).ready(function(){
$('.what_hide').hide();
$('#condition').change(
function(){
if(this.value == "yes"){
$('.what_hide').show();
}
else {
$('.what_hide').hide();
}
}
)
});
首先,您应该从元素中删除 id "showing" 并添加一个 class 名称 "showing" 或者您可以将此 class 添加到所有这些元素的父元素.其次,你应该在 jquery 中将你的 id 更改为 class。而且我认为您没有添加加载 jquery.
的脚本编辑后的代码:
$(document).ready(function(){
$('.showing').hide();
$('#condition').change(
function(){
if(this.value == "yes"){
$('.showing').show();
}
else {
$('.showing').hide();
}
}
)
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="col-4">
<div class="d-flex">
<div class="flex-fill p-2">
<select name="playing" class="form-control" id="condition" required>
<option value="no">No</option>
<option value="yes">Yes</option>
</select>
</div>
</div>
</div>
<div class="row">
<div class="col-2">
<div class="d-flex">
<div class="p-1">
<label class="p-2 showing" for="what">What</label>
</div>
</div>
</div>
<div class="col-4">
<div class="d-flex">
<div class="flex-fill p-2">
<input
type="text"
class="form-control input-text showing"
name="wat"
>
</div>
</div>
</div>
<div class="col-2">
<div class="d-flex">
<div class="p-1">
<label class="p-2 showing" for="type">Type</label>
</div>
</div>
</div>
<div class="col-4">
<div class="d-flex">
<div class="flex-fill p-2">
<input
type="text"
class="form-control input-text showing"
name="type"
>
</div>
</div>
</div>
</div>